首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Lapply和function函数正确运行

无法让Lapply和function函数正确运行
EN

Stack Overflow用户
提问于 2020-05-09 22:20:31
回答 2查看 106关注 0票数 2

我试图使用基于第5列中的二进制变量的dataframe来处理lapply函数。

我做的这个功能是非常直接的。一个简单的t.test并且工作得很好

代码语言:javascript
复制
t.test.by.ind = function(x, ind) {
  stopifnot(all(ind %in% c(0, 1)))
  return(t.test(x[ind == 0], x[ind == 1]))
}

现在,对问题,我不能为我的生活得到我申请工作。我尝试过几种变体,如:

代码语言:javascript
复制
##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]))
})

代码语言:javascript
复制
##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]))
})

我最糟糕的时候就是想申请工作。我可以申请工作很好。

代码语言:javascript
复制
apply(pros.dat[,-5], MARGIN = 2, FUN = t.test.by.ind, ind = pros.dat[,5])

为什么我看不出我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-09 22:26:13

当您通过一个data.frame进行应用时,您正在迭代它的列,所以您只需要应用类似于您在应用中的内容,而不使用页边距参数:

代码语言:javascript
复制
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]))
票数 1
EN

Stack Overflow用户

发布于 2020-05-09 22:27:52

lapply需要一个向量作为它的参数。

因此,您可以使用要分析的pros.dat列的索引:

代码语言:javascript
复制
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]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61704540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档