如何在 R 中创建一个循环来计算每列的值?
How to create a loop in R to calculate a value for each column?
我想计算下面数据集中每一列的标准差:
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
我试过像这样创建一个循环:
for (x in 1:3){
sdcol=sd(data[,x])
}
但是我收到以下错误:
Error in data[, x] : object of type 'closure' is not subsettable
你能帮我做这样一个循环吗?
谢谢
编辑
我建议你试试这个命令,它比 for
循环更快。确保您的变量都是数字。如果您的列包含缺失值
,则 na.rm = TRUE
参数很有用
sapply(data, sd, na.rm = TRUE)
例子
sapply(iris[,1:4], sd, na.rm = TRUE)
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8280661 0.4358663 1.7652982 0.7622377
我们也可以用
library(dplyr)
iris %>%
summarise_at(1:4, sd, na.rm = TRUE)
我想计算下面数据集中每一列的标准差:
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
我试过像这样创建一个循环:
for (x in 1:3){
sdcol=sd(data[,x])
}
但是我收到以下错误:
Error in data[, x] : object of type 'closure' is not subsettable
你能帮我做这样一个循环吗?
谢谢
编辑
我建议你试试这个命令,它比 for
循环更快。确保您的变量都是数字。如果您的列包含缺失值
na.rm = TRUE
参数很有用
sapply(data, sd, na.rm = TRUE)
例子
sapply(iris[,1:4], sd, na.rm = TRUE)
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8280661 0.4358663 1.7652982 0.7622377
我们也可以用
library(dplyr)
iris %>%
summarise_at(1:4, sd, na.rm = TRUE)