创建以名称作为参数的R函数?
假设我有一个如下所示的数据帧:创建以名称作为参数的R函数?,r,R,假设我有一个如下所示的数据帧: df1 <- data.frame("long name 1"=c(rnorm(n = 100, mean = 0, sd = 1),NA), treatment=sample(x = c(0,1), size = 101, replace = T)) names(df1) <- c("long name 1", "treatment") 有什么方法可以满足我的要求吗?最好在选择列的函数中使用[[而不是$ test
df1 <- data.frame("long name 1"=c(rnorm(n = 100, mean = 0, sd = 1),NA),
treatment=sample(x = c(0,1), size = 101, replace = T))
names(df1) <- c("long name 1", "treatment")
有什么方法可以满足我的要求吗?最好在选择列的函数中使用
[[
而不是$
test.f <- function(data, vname, tname, tvalue=1, cvalue=0) {
mean(data[[vname]][data[[tname]]==tvalue], na.rm = T)
}
test.f(data = df1, vname = "long name 1", tname = "treatment")
#[1] 0.1397585
人们有时真的应该开始阅读s。这个问题每天被问一次
test.f(data = df1, vname = "long name 1", tname = "treatment")
Warning message:
In mean.default(data$vname[data$tname == tvalue], na.rm = T) :
argument is not numeric or logical: returning NA
test.f <- function(data, vname, tname, tvalue=1, cvalue=0) {
mean(data[[vname]][data[[tname]]==tvalue], na.rm = T)
}
test.f(data = df1, vname = "long name 1", tname = "treatment")
#[1] 0.1397585
mean(df1$`long name 1`[df1$treatment==1], na.rm=TRUE)
#[1] 0.1397585