R:带()函数的apply()函数

时间:2016-10-13 19:13:00

标签: r apply with-statement

假设一个数据集,其中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 个答案:

答案 0 :(得分:2)

正如评论中提到的@Frank,applyrowMeans使用矩阵/ data.frame。因此,如果我们要使用with而不是ccbind会将其转换为matrix

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