R - 应用列均值,返回逻辑数组

R - tapply column mean, returning logical array

我有一个数据框。

我正在尝试使用 tapply 函数在第二列的值等于给定值时求出一列的平均值。

我想要tapply到return的平均值,但它是returning一个逻辑数组

(FALSE - 第二列的值不等于给定值时的平均值,TRUE - 第二列的值等于给定值时的平均值)

这是我正在应用的函数(当第 "cyl" 列等于 4 时,我想要第 "hp" 列的平均值)

tapply(mtcars$hp,mtcars$cyl==4,mean)

这就是return编辑的内容:

 FALSE      TRUE 
180.23810  82.63636 

如何让输出简单地为 82.63636?

谢谢

如果您使用tapply,您需要将结果子集化为仅return您想要的值

tapply(mtcars$hp,mtcars$cyl==4,mean)[[2]]
82.63636

但是,要获得一个列的平均值,由另一个列子集,您只需对子集数据调用 mean

mean(mtcars$hp[mtcars$cyl == 4])
82.63636

## similarly
# mean(mtcars[mtcars$cyl == 4, "hp"])