r-在数据帧中的列上执行t检验循环:ERROR变量的长度不同



我在对数据帧的所有列执行t检验时遇到问题。

  1. 我想做什么?每一列代表某个研究问题的KPI。此外,每列可分为目标=1和非目标=0两组;目标";柱我想在这两组之间对每列进行t检验,并将p值和t值保存在一个单独的数据帧中。

  2. 下面你可以找到一个可以工作的代码,不会有错误消息。然而,我需要逐列键入70次以下的代码,并始终更改列名(在"X1y_ret"以下(,这并不方便,因为我的数据帧中有这70列。

    t.test(X1y_ret ~ target, data = analysis_matched_targets_all, var.equal = FALSE)$p.value

  3. 这就是为什么我尝试使用for循环使其更加方便。你可以在下面找到代码。然而,它不起作用,给了我一个不同可变长度的错误消息(为"target"找到(。

for(i in colnames(analysis_matched_targets_all) { 
statistics_all_types_all_year[3, which(colnames(analysis_matched_targets_all)==i )] <- t.test(i ~ target, data = analysis_matched_targets_all, var.equal = FALSE)$p.value}

如果你能帮我解决问题,我将不胜感激:(

我的答案集中在你的第2部分,这似乎是你希望知道的核心。如何在不同的输入参数上迭代、多次应用一个函数。


#invent a dataset, not with 70 vars to t.test, but with 2
(sleep_with_more_vars <- mutate(sleep,
anothervar=rev(extra)))
# show how we would by hand do each of the 2 
t.test(extra  ~ group, data = sleep_with_more_vars, var.equal = FALSE)$p.value
t.test(anothervar  ~ group, data = sleep_with_more_vars, var.equal = FALSE)$p.value
# show how we would do them programatically, just by naming them
vars_to_do <- c("extra",
"anothervar")
(results <- lapply(vars_to_do, function(x)t.test(as.formula(paste0(x ," ~ group")),
data = sleep_with_more_vars, var.equal = FALSE)$p.value))
names(results) <- vars_to_do
results

最新更新