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
总是从x
对名为dat
的列进行子集化,而不是我传入的列名称(即权重)。所以我的问题是如何传递我想要的列名,以便运行此函数?
答案 0 :(得分: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")