代码之家  ›  专栏  ›  技术社区  ›  msoftrain

R: 在with()函数中应用()函数

  •  1
  • msoftrain  · 技术社区  · 8 年前

    假设有一个数据集,其中10名参与者填写了一份包含3个项目x、y和z的问卷。

    ss <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(10))
    

    我想计算每个人这些项目的平均值(个人平均值)。 我可以很容易地这样做:

    ss$personalmean <- rowMeans(ss[c("x", "y", "z")])
    

    或者这样:

    ss$personalmean <- apply(ss[c("x", "y", "z")], 1, mean)
    

    但是假设我希望能够在with函数中这样做。然后我遇到了问题。

    这是有效的:

    with(ss, (x+y+z)/3)
    

    with(ss, rowMeans(c(x,y,z)))
    with(ss, apply(c(x,y,z), 1, mean))
    

    我不明白为什么。这里的示例很简单,但简而言之,我想使用函数 apply() 在职能范围内 with() .

    如果有人在某个地方发布了一个很好的答案,我很抱歉,但谷歌搜索我要找的东西并不容易,因为“with”是一个非常通用的术语。

    1 回复  |  直到 8 年前
        1
  •  2
  •   akrun    8 年前

    正如@Frank在评论中提到的 apply rowMeans 使用matrix/data.frame。所以,如果我们想使用 with 而不是 c , cbind 转换为 matrix ,

    with(ss, rowMeans(cbind(x,y,z)))
    with(ss, apply(cbind(x,y,z), 1, mean))