我试图使用基于第5列中的二进制变量的dataframe来处理lapply函数。
我做的这个功能是非常直接的。一个简单的t.test并且工作得很好
t.test.by.ind = function(x, ind) {
stopifnot(all(ind %in% c(0, 1)))
return(t.test(x[ind == 0], x[ind == 1]))
}现在,对问题,我不能为我的生活得到我申请工作。我尝试过几种变体,如:
##Note that pros.dat = my dataframe
lapply(pros.dat, FUN = function(df){
return(apply(pros.dat[,-5], MARGIN = 2,
FUN = t.test.by.ind, ind = pros.dat[,5]))
})和
##Note that pros.dat = my dataframe
lapply(pros.dat, FUN = function(df){
return(apply(df[,-5], MARGIN = 2,
FUN = t.test.by.ind, ind = df[,5]))
})我最糟糕的时候就是想申请工作。我可以申请工作很好。
apply(pros.dat[,-5], MARGIN = 2, FUN = t.test.by.ind, ind = pros.dat[,5])为什么我看不出我做错了什么?
发布于 2020-05-09 22:26:13
当您通过一个data.frame进行应用时,您正在迭代它的列,所以您只需要应用类似于您在应用中的内容,而不使用页边距参数:
pros.dat = data.frame(matrix(rnorm(100*4),ncol=4),ind=rbinom(100,1,0.5))
lapply(pros.dat[,-5],function(i)t.test.by.ind(i,pros.dat[,5]))发布于 2020-05-09 22:27:52
lapply需要一个向量作为它的参数。
因此,您可以使用要分析的pros.dat列的索引:
my_columns=c(1,2,3,4) # for instance
lapply(my_columns,function(col) t.test.by.ind(x=pros.dat[,col],y=pros.dat[5]))https://stackoverflow.com/questions/61704540
复制相似问题