gpt4 book ai didi

r - 在数据框的某些列上使用 t.test 和 apply

转载 作者:行者123 更新时间:2023-12-04 12:17:07 24 4
gpt4 key购买 nike

我正在尝试计算数据框中某些特定列的 p 值。

df <- data.frame(
expa_1=sample(c(rnorm(40,5,1) + 30)),
expa_2=sample(c(rnorm(40,5,1) + 30)),
expa_3=sample(c(rnorm(40,5,1) + 30)),
expb_1=sample(c(rnorm(40,15,1) + 30)),
expb_2=sample(c(rnorm(40,15,1) + 30)),
expb_3=sample(c(rnorm(40,15,1) + 30)))
apply(df,1,function(x) t.test(x[1:3],x[4:6])$p.value)

所以这是我的小例子,似乎工作正常......如果我要从中计算 p 值的列不止于此,则会出现错误。

df <- data.frame(names=c(letters,LETTERS[1:14]),
expa_1=sample(c(rnorm(40,5,1) + 30)),
expa_2=sample(c(rnorm(40,5,1) + 30)),
expa_3=sample(c(rnorm(40,5,1) + 30)),
expb_1=sample(c(rnorm(40,15,1) + 30)),
expb_2=sample(c(rnorm(40,15,1) + 30)),
expb_3=sample(c(rnorm(40,15,1) + 30)))
apply(df,1,function(x) t.test(x[2:4],x[5:7])$p.value)

谁能给我解释一下,也许可以给我一个更好的解决方案?

提前致谢

最佳答案

你可以试试

 apply(df[-1], 1, function(x) t.test(x[1:3], x[4:6])$p.value)

第一列是字符/因素。当您执行 apply 时,它会转换为 matrix,并且值将转换为“character”,因为“matrix”只能包含一个类。

例如

 apply(df,1,function(x) x[2:4])[1:3]
#[1] "34.33018" "34.93256" "34.74045"

关于r - 在数据框的某些列上使用 t.test 和 apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544047/

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