【问题标题】:How to use lapply with a formula?如何将 lapply 与公式一起使用?
【发布时间】:2011-10-23 23:20:06
【问题描述】:

我的 lapply 函数有问题,我没有找到之前发布的任何匹配问题。 我需要对所有列表元素应用排列测试,但是我无法正确设置 lapply。

我正在尝试这个

testperm <- lapply(test-list, FUN=perm.test, formula=(cover ~ group))

函数 perm.test 来自包'exactRankTests' 封面是因(数值)变量,组是一个因素。

非常感谢任何有关如何应用此类功能的提示。 詹斯

【问题讨论】:

  • 'lapply' 返回一个列表——这就是你想要的?

标签: list r lapply


【解决方案1】:

当您使用公式时,您通常还需要为 data 参数提供一个值,以便函数知道要使用哪些数据。您的数据集将是列表元素,因此您需要使用匿名函数将它们提供给 perm.test。

在这种情况下尝试:

testperm <- lapply(test.list, FUN=function(x) perm.test(formula=(cover ~ group),data=x)) 

【讨论】:

  • 嗨詹姆斯,这看起来很有用,但是,我收到错误:“测试中的错误 - 列表:二进制运算符的非数字参数”因此它通常说“测试列表”不起作用?
  • test-list 包含减号,它在变量名中是无效的,除非你使用反引号,最好重命名为test.list。我将使用此名称修改答案。
  • @Gavin Simpson 我认为这行不通,因为没有匿名函数, lapply 只会传递给函数的第一个参数。
  • 抱歉,误会了什么测试列表。你是对的。我要删除我没用的评论。
  • 詹姆斯,非常感谢。是的,那个“减号”令人困惑。现在它起作用了!太好了!
【解决方案2】:

这是您需要查看的第三个​​参数。

lapply 采用(至少)两个参数,一个列表(包括数据框)和一个函数,FUN,对它进行操作:

data(iris)
df0 = iris[1:5,1:3]

fnx = function(v){v^2}

lapply(df0, fnx)

lapply 接受一个可选的 third 参数,该参数必须对应于 FUN 所需的附加参数,并且 not 由 lapply 的第一个参数数据结构提供:

lapply( df0[,1], quantile, probs=1:3/4)

【讨论】:

  • 嘿,Doug,谢谢,我知道这个例子。这很简单。这如何处理像 perm.test 这样更复杂的东西?
猜你喜欢
  • 2012-11-16
  • 2019-11-21
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多