[英]R: how to pass a variable into a function to subset data.frame
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")
我收到一個錯誤:
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
的列,而不是我傳入的列名(即weight)。 所以我的問題是如何傳遞想要的列名,以便該函數運行?
正如注釋中提到的@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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.