让我们说在R中我有一个数据框(称为df
),其中包含一串包含名为“Var1foo”,“Var2foo”等整数数据的列。
现在假设我要创建一个名为sum1
的新列,它将“Var3foo”和“Var6foo”之间的所有内容相加。我可能会这样做:
df$sum1 <- rowSums(df[Var3foo:Var6foo])
或者,我可能会做一些更复杂的事情并创建一个名为foobar
的新列apply()
,如下所示:
eenie = 3
meenie = 2
df$foobar <- apply(df, 1, function(x) if (sum(x[Var2foo:Var7foo]) == eenie & sum(x[1:Var3foo]) != meenie) 1 else 0)
问题是我总是必须在引用这些列时明确写出列名或索引。如果我想引用{Var x foo“列,其中x <- 8
或”Var y foo“y <- 12
,那么该怎么办?
我的意思是,我无法df$paste0("Var", x, "foo")
或sum(x[paste0("Var", x, "foo"):paste0("Var", y, "foo")])
。
我还考虑使用dplyr::mutate()
创建df$sum1
和df$foobar
,但似乎还需要明确的列(变量)名称。
我该怎么办?谢谢!
答案 0 :(得分:1)
也许您可以使用
来引用该列df[paste0("Var", x, "foo")]
如果你经常使用这些东西,你可以使用一些功能来减少你的工作,
int2name <- function(x, prefix = "", suffix = ""){
paste0(prefix, x, suffix)
}
然后你可以使用:
df[int2name(2:4, prefix = "Var", suffix = "foo")]
答案 1 :(得分:1)
一个简单的解决方案是使用
直接引用列sum(df[,x:y])
当然,这仅适用于列有序的情况。