2013-08-19 18 views
0

我想一個函數應用於每一行的data.frame/data.table是否可以使用列名稱而不是數字,因爲在傳遞的函數中應用?

cases <- expand.grid(a=c(TRUE,FALSE), b=c(TRUE,FALSE), c=c(TRUE,FALSE)) 

myFun <- function(data, row){ 
    otherFun(data, row[1], row[2], row[3]) 
} 

apply(cases, 1, myFun, data=dt1) 

但是這工作,

myFun <- function(data, row){ 
    otherFun(data, row$a, row$b, row$c) 
} 

這是行不通的。

這樣做的最佳方式是什麼,以便它不必依賴列命令?

+3

請勿使用'$'。 ''['和名字以及職位一起工作。 – joran

回答

2

apply將事情強制轉換爲矩陣。詳情請參閱?apply

如果X不是一個數組但具有非空調光值(如數據幀)的類的對象,應用嘗試將其轉換到經由as.matrix陣列如果它是二維的(例如,數據幀)或通過as.array。

因此,索引編制不合適。

相關問題