我有两个单独的列表,每个列表包含4个data.frames。我需要在两个列表中的每个数据帧之间执行学生的t检验(t.test
)rainfall
。在两个列表中包含的数据帧之间执行Student t检验
这里列出:
lst1 = list(data.frame(rnorm(20), rnorm(20)), data.frame(rnorm(25), rnorm(25)), data.frame(rnorm(16), rnorm(16)), data.frame(rnorm(34), rnorm(34)))
lst1 = lapply(lst1, setNames, c('rainfall', 'snow'))
lst2 = list(data.frame(rnorm(19), rnorm(19)), data.frame(rnorm(38), rnorm(38)), data.frame(rnorm(22), rnorm(22)), data.frame(rnorm(59), rnorm(59)))
lst2 = lapply(lst2, setNames, c('rainfall', 'snow'))
什么,我需要做的是:
t.test(lst1[[1]]$rainfall, lst2[[1]]$rainfall)
t.test(lst1[[2]]$rainfall, lst2[[2]]$rainfall)
t.test(lst1[[3]]$rainfall, lst2[[3]]$rainfall)
t.test(lst1[[4]]$rainfall, lst2[[4]]$rainfall)
我可以通过编写各4个data.frames的做如上(其实我有40与我的真实数据),但我想知道是否存在一个更聪明,更快捷的方式来做到这一点。
这里下面是我的尝试(没有成功):
myfunction = function(x,y) {
test = t.test(x, y)
return(test)
}
result = mapply(myfunction, x=lst1, y=lst2)
请提供可重复的样品供人一起工作。 – lmo
是的,@Imo是对的。人们只能猜测没有。 – BigDataScientist
完成。谢谢 – aaaaa