2014-12-27 74 views
1
dat = data.frame(height = c(20, 20, 40, 50, 60, 10), weight = c(100, 200, 300, 200, 140, 240), 
      age = c(19, 20, 20, 19, 10, 11)) 
f = function(x){ 
    subset.19 = dat$x[dat$age == 20] 
    subset.20 = dat$x[dat$age == 19] 
    t.test(subset.19, subset.20) 
} 
f("weight") 

我得到一個錯誤:R:如何將一個變量傳遞到一個函數到子集data.frame

錯誤VAR(X): 'x' 爲NULL 此外:警告信息: 1:在is.na(x)中:is.na()應用於類型爲'NULL'的非(列表或向量) 2:在mean.default(x)中:參數不是數字或邏輯:返回NA

我認爲這是因爲dat$x始終爲NULL,因爲data.frame中沒有名爲x的列。我想我不會將變量名稱傳遞給函數。 dat$x始終是dat中名爲x的列的子集,而不是傳入的列名稱(即重量)。所以我的問題是如何傳遞列名稱,我想這樣的功能運行?

+1

重點是當在變量中傳遞列名時,必須使用''而不是''''。你可以通過輸入'help(「[」)'來閱讀。 –

回答

2

由於在評論中提到了@agstudy和@docendodiscimus,在函數中傳遞列名時,最好使用[,[[而不是$

f <- function(x){ 
    subset.19 = dat[,x][dat$age == 20] 
    subset.20 = dat[,x][dat$age == 19] 
    t.test(subset.19, subset.20) 
} 
f("weight") 
相關問題