2017-05-08 410 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

相關問題