R:如何将变量传递到函数中以子集data.frame
我得到一个错误: 变量(x)中的错误:“x”为空 此外:警告信息: 1:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量) 2:平均值。默认值(x):参数不是数字或逻辑参数:返回NAR:如何将变量传递到函数中以子集data.frame,r,R,我得到一个错误: 变量(x)中的错误:“x”为空 此外:警告信息: 1:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量) 2:平均值。默认值(x):参数不是数字或逻辑参数:返回NA 我认为这是因为dat$x始终为空,因为data.frame中没有名为x的列。我认为我没有将变量名传递给函数dat$x总是将dat中名为x的列作为子集,而不是我传入的列名(即权重)。因此,我的问题是,如何才能传入我想要的列名,以便该函数运行?正如注释中提到的@agstudy和@docen
我认为这是因为
dat$x
始终为空,因为data.frame中没有名为x
的列。我认为我没有将变量名传递给函数dat$x
总是将dat
中名为x
的列作为子集,而不是我传入的列名(即权重)。因此,我的问题是,如何才能传入我想要的列名,以便该函数运行?正如注释中提到的@agstudy和@docendodiscimus,在函数中传递列名时,最好使用[
,[[/code>而不是$
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")
f要点是在变量中传递列名时必须使用[
而不是$
。您可以通过键入帮助(“[”
)来了解这一点。
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")