R:with() 函数中的 apply() 函数

R: apply() function in with() function

假设有一个数据集,其中 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))

我不明白为什么。这里的例子很简单,但简而言之,我想在函数 with().

中使用函数 apply()

如果有人在某处发布了该问题的良好答案,我深表歉意,但鉴于 "with" 是一个非常通用的术语,谷歌搜索我正在寻找的内容并不容易。

正如@Frank 在评论中提到的,applyrowMeans 与 matrix/data.frame 一起使用。所以,如果我们想使用 with,而不是 ccbind 将其转换为 matrix

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