R 降价循环
R markdown loops
这段代码我已经尝试了一段时间,不明白为什么它不起作用(它实际上比开始时更糟糕,但仍然不是我需要的)
for(i in names(swiss)){
print(paste(names(swiss[i]),", which mean is", round(sapply(swiss, mean), 2)))
}
## [1] "Fertility , which mean is 70.14" "Fertility , which mean is 50.66"
## [3] "Fertility , which mean is 16.49" "Fertility , which mean is 10.98"
## [5] "Fertility , which mean is 41.14" "Fertility , which mean is 19.94"
## [1] "Agriculture , which mean is 70.14" "Agriculture , which mean is 50.66"
## [3] "Agriculture , which mean is 16.49" "Agriculture , which mean is 10.98"
## [5] "Agriculture , which mean is 41.14" "Agriculture , which mean is 19.94"
## [1] "Examination , which mean is 70.14" "Examination , which mean is 50.66"
## [3] "Examination , which mean is 16.49" "Examination , which mean is 10.98"
## [5] "Examination , which mean is 41.14" "Examination , which mean is 19.94"
## [1] "Education , which mean is 70.14" "Education , which mean is 50.66"
## [3] "Education , which mean is 16.49" "Education , which mean is 10.98"
## [5] "Education , which mean is 41.14" "Education , which mean is 19.94"
## [1] "Catholic , which mean is 70.14" "Catholic , which mean is 50.66"
## [3] "Catholic , which mean is 16.49" "Catholic , which mean is 10.98"
## [5] "Catholic , which mean is 41.14" "Catholic , which mean is 19.94"
## [1] "Infant.Mortality , which mean is 70.14"
## [2] "Infant.Mortality , which mean is 50.66"
## [3] "Infant.Mortality , which mean is 16.49"
## [4] "Infant.Mortality , which mean is 10.98"
## [5] "Infant.Mortality , which mean is 41.14"
## [6] "Infant.Mortality , which mean is 19.94"
在这里,我们遍历列名并在循环内部,再次使用不需要的 sapply
循环。相反,我们通过将列提取为 vector
以及相应的列名称 swiss[[i]]
和 round
来获得 mean
for(i in names(swiss)){
print(paste(i,", which mean is", round(mean(swiss[[i]]), 2)))
}
#[1] "Fertility , which mean is 70.14"
#[1] "Agriculture , which mean is 50.66"
#[1] "Examination , which mean is 16.49"
#[1] "Education , which mean is 10.98"
#[1] "Catholic , which mean is 41.14"
#[1] "Infant.Mortality , which mean is 19.94"
注意:当我们执行 in
时,值 i
是每个列名。我们不需要再做一次 names(swiss[i])
或使用矢量化选项,因为 paste
和 colMeans
是矢量化的
paste(names(swiss), ", which mean is ", round(colMeans(swiss), 2))
#[1] "Fertility , which mean is 70.14"
#[2] "Agriculture , which mean is 50.66"
#[3] "Examination , which mean is 16.49"
#[4] "Education , which mean is 10.98"
#[5] "Catholic , which mean is 41.14"
#[6] "Infant.Mortality , which mean is 19.94"
这是另一个基本 R 选项,使用 colMeans
+ stack
+ paste
do.call(paste, cbind(stack(round(colMeans(swiss), 2)), ", which mean is")[c(2, 3, 1)])
这给出了
[1] "Fertility , which mean is 70.14"
[2] "Agriculture , which mean is 50.66"
[3] "Examination , which mean is 16.49"
[4] "Education , which mean is 10.98"
[5] "Catholic , which mean is 41.14"
[6] "Infant.Mortality , which mean is 19.94"
这段代码我已经尝试了一段时间,不明白为什么它不起作用(它实际上比开始时更糟糕,但仍然不是我需要的)
for(i in names(swiss)){
print(paste(names(swiss[i]),", which mean is", round(sapply(swiss, mean), 2)))
}
## [1] "Fertility , which mean is 70.14" "Fertility , which mean is 50.66"
## [3] "Fertility , which mean is 16.49" "Fertility , which mean is 10.98"
## [5] "Fertility , which mean is 41.14" "Fertility , which mean is 19.94"
## [1] "Agriculture , which mean is 70.14" "Agriculture , which mean is 50.66"
## [3] "Agriculture , which mean is 16.49" "Agriculture , which mean is 10.98"
## [5] "Agriculture , which mean is 41.14" "Agriculture , which mean is 19.94"
## [1] "Examination , which mean is 70.14" "Examination , which mean is 50.66"
## [3] "Examination , which mean is 16.49" "Examination , which mean is 10.98"
## [5] "Examination , which mean is 41.14" "Examination , which mean is 19.94"
## [1] "Education , which mean is 70.14" "Education , which mean is 50.66"
## [3] "Education , which mean is 16.49" "Education , which mean is 10.98"
## [5] "Education , which mean is 41.14" "Education , which mean is 19.94"
## [1] "Catholic , which mean is 70.14" "Catholic , which mean is 50.66"
## [3] "Catholic , which mean is 16.49" "Catholic , which mean is 10.98"
## [5] "Catholic , which mean is 41.14" "Catholic , which mean is 19.94"
## [1] "Infant.Mortality , which mean is 70.14"
## [2] "Infant.Mortality , which mean is 50.66"
## [3] "Infant.Mortality , which mean is 16.49"
## [4] "Infant.Mortality , which mean is 10.98"
## [5] "Infant.Mortality , which mean is 41.14"
## [6] "Infant.Mortality , which mean is 19.94"
在这里,我们遍历列名并在循环内部,再次使用不需要的 sapply
循环。相反,我们通过将列提取为 vector
以及相应的列名称 swiss[[i]]
和 round
mean
for(i in names(swiss)){
print(paste(i,", which mean is", round(mean(swiss[[i]]), 2)))
}
#[1] "Fertility , which mean is 70.14"
#[1] "Agriculture , which mean is 50.66"
#[1] "Examination , which mean is 16.49"
#[1] "Education , which mean is 10.98"
#[1] "Catholic , which mean is 41.14"
#[1] "Infant.Mortality , which mean is 19.94"
注意:当我们执行 in
时,值 i
是每个列名。我们不需要再做一次 names(swiss[i])
或使用矢量化选项,因为 paste
和 colMeans
是矢量化的
paste(names(swiss), ", which mean is ", round(colMeans(swiss), 2))
#[1] "Fertility , which mean is 70.14"
#[2] "Agriculture , which mean is 50.66"
#[3] "Examination , which mean is 16.49"
#[4] "Education , which mean is 10.98"
#[5] "Catholic , which mean is 41.14"
#[6] "Infant.Mortality , which mean is 19.94"
这是另一个基本 R 选项,使用 colMeans
+ stack
+ paste
do.call(paste, cbind(stack(round(colMeans(swiss), 2)), ", which mean is")[c(2, 3, 1)])
这给出了
[1] "Fertility , which mean is 70.14"
[2] "Agriculture , which mean is 50.66"
[3] "Examination , which mean is 16.49"
[4] "Education , which mean is 10.98"
[5] "Catholic , which mean is 41.14"
[6] "Infant.Mortality , which mean is 19.94"