【问题标题】:Calculate standard deviation for each variable given in a vector计算向量中给定的每个变量的标准偏差
【发布时间】:2015-02-05 13:21:27
【问题描述】:

当我有一个字符串向量,并且每个字符串对应数据帧中的一个变量时,如何轻松接收对应标准差的向量?还有什么比循环更好的吗?

下面是一个使用mtcars的例子:

attach(mtcars)
string_vector <- ("mpg", "cyl", "disp")

我知道如何计算标准差

sd(mpg)
# 6.026948
sd(cyl)
# 1.785922
sd(disp)
# 123.9387

我到底想要的是

sd_vector <- c(sd(mpg), sd(cyl), sd(disp))
sd_vector
#    6.026948   1.785922 123.938694

【问题讨论】:

  • apply(mtcars[, string_vector ], 2, sd)?不要使用attach
  • attach 仅用于说明目的。

标签: r standard-deviation


【解决方案1】:

你可以使用sapply:

> string_vector <- c("mpg", "cyl", "disp")
> sapply(mtcars[string_vector], sd)
       mpg        cyl       disp 
  6.026948   1.785922 123.938694 

【讨论】:

  • sapplyvapply 可能更适合操作。
  • 对我有什么不同?
  • 如上所示,sapply 返回一个原子向量。 vapply 也会返回一个原子向量,即尝试 vapply(mtcars[string_vector], sd, numeric(1)); lapply 将返回一个列表。欲了解更多信息,请在此处查看 Hadley 出色的 lapply-sapply-vapply 描述:adv-r.had.co.nz/Functionals.html#functionals-loop
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 2022-01-23
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多