gpt4 book ai didi

r - 如何将相同的命令应用于变量列表

转载 作者:行者123 更新时间:2023-12-03 20:28:14 25 4
gpt4 key购买 nike

我想对一堆变量应用 t 检验。下面是一些模拟数据

d <- data.frame(var1=rnorm(10), 
var2=rnorm(10),
group=sample(c(0,1), 10, replace=TRUE))

# Is there a way to do this in some sort of loop?
with(d, t.test(var1~group))
with(d, t.test(var2~group))

# I tried this but the loop did not give a result!?
varnames <- c('var1', 'var2')
for (i in 1:2) {
eval(substitute(with(d, t.test(variable~group)),
list(variable=as.name(varnames[i]))))
}

此外,是否可以从 t 检验的结果(例如两组均值、p 值)中提取值,以便循环生成跨变量的简洁平衡表?换句话说,我想要的最终结果不是一堆相互的 t 检验,而是这样的表格:
Varname   mean1   mean2   p-value
Var1 1.1 1.2 0.989
Var2 1.2 1.3 0.912

最佳答案

您可以使用 formulalapply像这样

set.seed(1)
d <- data.frame(var1 = rnorm(10),
var2 = rnorm(10),
group = sample(c(0, 1), 10, replace = TRUE))


varnames <- c("var1", "var2")
formulas <- paste(varnames, "group", sep = " ~ ")
res <- lapply(formulas, function(f) t.test(as.formula(f), data = d))
names(res) <- varnames

如果你想提取你的表,你可以这样进行
t(sapply(res, function(x) c(x$estimate, pval = x$p.value)))
mean in group 0 mean in group 1 pval
var1 0.61288 0.012034 0.098055
var2 0.46382 0.195100 0.702365

关于r - 如何将相同的命令应用于变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17862758/

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