2017-05-08 172 views
1

在这里有一个问题 - 我使用eclipse参数创建一个函数来处理不同的函数参数。我重新创建类似的情况,以显示我不断碰到问题,错误:在R中无效的下标类型'列表'

> 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' 

如何应对喂养列表到一个子集调用的问题?

回答

1

我们需要使用连击创建的vector代替list

x <- c("alpha", "beta") 
rowSums(d[x]) 
#[1] 5 7 9 

,如果我们使用list,然后unlist它来创建一个vectordata.frame需要的列名vector(列索引)或行的名称(行索引),以子集列或行

x <- list("alpha", "beta") 
rowSums(d[unlist(x)]) 
#[1] 5 7 9 
+0

@ S31我猜,你正在使用'd [,X]',而不是当使用'd [X]'因为前者返回向量除非你指定'd [,x,drop = FALSE]',否则re只是一个列 – akrun

相关问题