【问题标题】:List of character vector combinations字符向量组合列表
【发布时间】:2015-11-02 01:29:24
【问题描述】:

我正在尝试使用具有四个可能模型“x1”、“x2”、“x3”、“x4”的名称的向量,并创建一个包含这些术语的所有可能排列的更长向量,这样我就可以开始了具有每个属性的数据框。

下面的代码看起来应该可以工作,但没有。元素不会粘贴在一起,例如“x1”和“x2”组合应该产生“x1x2”模型名称,但它仍然是“x1”“x2”。

models <- c("x1","x2","x3","x4")

modelist<- as.character()
for(i in 1:4){
  modelist <- c(modelist,combn(models,m=i,FUN=paste0,simplify = T))
}
modelist

由于我不是在寻找交互术语,x1x1 不应该出现,但我很想知道如何以任何方式进行以供将来参考。

这是我正在寻找的输出:

modelist <- c("x1","x2","x3","x4","x1x2","x1x3","x1x4","x2x3","x2x4","x3x4",
            "x1x2x3","x2x3x4","x1x2x4","x1x3x4","x1x2x3x4")

这就是modelist中应该包含的内容。

【问题讨论】:

  • collapse = "" 试试看,就像combn(models, m=i, FUN=paste, collapse = "", simplify = T)一样
  • 您要删除任何内容吗?例如。 x1x1 应该出现吗?
  • 理查德。 paste0() 不起作用, paste() 不起作用。但是,您对 paste() 和 collapse="" 的建议似乎奏效了。这么奇怪?
  • 它们实际上是组合而不是排列,因为顺序无关紧要:您不会将“x3x2”视为与“x2x3”不同。

标签: r combinations


【解决方案1】:

paste() 及其默认参数以及 sep = "" 将不起作用,因为 combn() 的结果也是一个原子向量,但对于每个组合。所以每个组合基本上都和下面的一样。

paste(letters[1:4])
# [1] "a" "b" "c" "d"
paste(letters[1:4], sep = "")
# [1] "a" "b" "c" "d"
paste(letters[1:4], collapse = "")
# [1] "abcd"

所以你会想在paste() 中使用collapse = ""。这是lapply() 解决方案。

unlist(lapply(1:4, function(i) combn(models, i, paste, collapse = "")))
#  [1] "x1"       "x2"       "x3"       "x4"       "x1x2"     "x1x3"     "x1x4"
#  [8] "x2x3"     "x2x4"     "x3x4"     "x1x2x3"   "x1x2x4"   "x1x3x4"   "x2x3x4"
# [15] "x1x2x3x4"

如果您想继续使用for() 循环,我建议您分配一个列表,而不是在循环中构建字符向量。它效率更高。您可以分配长度为sum(choose(4, 1:4)) 的字符向量,但是循环索引有点棘手,并且取消列出列表比担心所有这些要容易得多。此外,列表是处理不同长度的相似对象时使用的标准结构。

modlist <- vector("list", 4)
for(i in 1:4) {
    modlist[[i]] <- combn(models, i, paste, collapse = "")
}
unlist(modlist)
#  [1] "x1"       "x2"       "x3"       "x4"       "x1x2"     "x1x3"     "x1x4"
#  [8] "x2x3"     "x2x4"     "x3x4"     "x1x2x3"   "x1x2x4"   "x1x3x4"   "x2x3x4"
# [15] "x1x2x3x4"

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2017-02-19
    • 1970-01-01
    • 2021-04-04
    • 2021-08-22
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多