gpt4 book ai didi

r - 创建一个以名称作为参数的 R 函数?

转载 作者:行者123 更新时间:2023-12-02 09:31:34 24 4
gpt4 key购买 nike

假设我有一个如下所示的数据框:

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")

我想创建一个有 5 个参数的函数。现在我有这个:

test.f <- function(data, vname, tname, tvalue=1, cvalue=0) {
vname<-as.name(vname)
tname <- as.name(tname)
mean.Xt <- mean(data$vname[data$tname==tvalue], na.rm = T)
}

当我运行它时,出现以下错误:

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

关于r - 创建一个以名称作为参数的 R 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com