错误:R 中无效的下标类型“列表”

S31*_*S31 9 r

这里有一个问题 - 我正在使用 eclipse 参数创建一个函数来处理不同的函数参数。我重新创建了类似的情况以显示我不断遇到的问题,

> d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
> d
  alpha beta gamma
1     1    4     7
2     2    5     8
3     3    6     9

> x <- list("alpha", "beta")
> rowSums(d[,c(x)])
Error in .subset(x, j) : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)

如何处理将列表提供给子集调用的问题?

akr*_*run 8

我们需要使用连接来创建一个vector而不是list

x <- c("alpha", "beta")
rowSums(d[x])
#[1] 5 7 9
Run Code Online (Sandbox Code Playgroud)

如果我们正在使用list,那么unlist它会创建一个vectorasdata.frame需要一个vector列名(列索引)或行名(行索引)来对列或行进行子集

x <- list("alpha", "beta")
rowSums(d[unlist(x)])
#[1] 5 7 9
Run Code Online (Sandbox Code Playgroud)