【问题标题】:Using a variable to refer to another variable in R?使用变量来引用 R 中的另一个变量?
【发布时间】:2015-11-09 16:54:57
【问题描述】:

我正在尝试在 R 中运行“for”循环来分析多个变量。我有一个列名(“AppleTag1”、“AppleTag2”、“CherryTag1”、“CherryTag2”......)的数据集(“DataSet”)。该循环是比较“ColumnName”中列出的每个唯一列名的“Tag1”和“Tag2”列,并从两列中获取具有唯一值的向量。我的问题是如何将粘贴函数的结果称为变量。我知道用于收集唯一结果的第一个过去函数可以用“align()”修复。然而,另外两个呢?如何确保 R 将 paste() 结果“DataSet$AppleTag1”作为变量而不是“字符串”进行分析。现在,我得到一个“CombineResult_XXX”和“DataSet$AppleTag1,DataSet$AppleTag2”的列表,但我想要它测试这两列中的内容并得到类似“123、213、141、232”的内容。 感谢您的帮助。

ColumnName <- c("Apple","Cherry","Bubble","Killer","Fat","Glass","Comp","Key")
NameTag <- c(A,B,C,D,E,F,G,H,I,J)
for (i in 1:10) {
  paste("CombineResult_",NameTag[i],sep="") <- unique(c(
  as.vector(paste("DataSet$",ColumnName[i],"Tag1", sep="")),
  as.vector(paste("DataSet$",ColumnName[i],"Tag2", sep=""))))
}

【问题讨论】:

  • 你的数据集有 16 列吗? ColumnName 中的每个值都有两个?如果是这样,为什么不这样做:for (i in seq(1, 16, by = 2)) { paste("CombineResult_", i, sep = "") &lt;- unique(c(DataSet[i], DataSet[i + 1]) }?此结果要求彼此相关的列彼此相邻。

标签: r variables paste


【解决方案1】:

您不能将$ 与字符串一起用作列名。如果要使用字符串进行子集化,请使用 [[ 表示法。也许这样的东西会更好。

ColumnName <- c("Apple", "Cherry", "Bubble", "Killer", "Fat", "Glass", "Comp", "Key")
NameTag <- c("A","B","C","D","E","F","G","H","I","J")
CombineResult <- lapply(ColumnNames, function(x) {
    unique(c(
        DataSet[[paste0(x,"Tag1")]],
        DataSet[[paste0(x,"Tag2")]]
    ))
})
names(CombineResult) <- NameTag(seq_along(CombineResult))

这里的结果存储在一个命名列表中。您可以使用CombineResult$ACombineResult[["A"]] 将它们取出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2019-01-07
    • 2021-03-02
    • 2013-04-03
    • 2014-04-30
    • 2011-11-14
    相关资源
    最近更新 更多