r中的for循环不工作
我们有一个向量向量r中的for循环不工作,r,loops,for-loop,R,Loops,For Loop,我们有一个向量向量 s = c(c(7,6,8,5,9),c(3,2,4),c(6,5,7)) 为什么这会将正确的值输出到控制台 mean(s[1]) mean(s[2]) mean(s[3]) 而下面的结果却一无所获 for (i in 1:3) { mean(s[i]) } 通过使用c,我们将三个向量连接到一个向量。因此,s[1]或s[2]或s[3]的平均值将是单个元素的平均值,而不是向量的平均值。i、 e s = c(c(7,6,8,5,9),c(3,2,4),c(6,5,7)
s = c(c(7,6,8,5,9),c(3,2,4),c(6,5,7))
为什么这会将正确的值输出到控制台
mean(s[1])
mean(s[2])
mean(s[3])
而下面的结果却一无所获
for (i in 1:3) {
mean(s[i])
}
通过使用
c
,我们将三个向量
连接到一个向量
。因此,s[1]
或s[2]
或s[3]
的平均值将是单个元素的平均值,而不是向量的平均值。i、 e
s = c(c(7,6,8,5,9),c(3,2,4),c(6,5,7))
s[1]
#[1] 7
s[2]
#[1] 6
s[3]
#[1] 8
但是,如果我们假设您有一个向量列表
s <- list(c(7,6,8,5,9),c(3,2,4),c(6,5,7))
基于循环代码的,如果列表使用[
而不是[[
for(i in 1:3){ print(mean(s[i]))}
#[1] NA
#[1] NA
#[1] NA
#Warning messages:
#1: In mean.default(s[i]) :
#argument is not numeric or logical: returning NA
for(i in 1:3){ print(mean(s[[i]]))}
#[1] 7
#[1] 3
#[1] 6
为了存储输出,我们可以创建一个新对象Out
Out <- vector('numeric', length(s))
for(i in 1:3) Out[i] <- mean(s[[i]])
Out
#[1] 7 3 6
Out因为你没有打印出来,所以请尝试for(1:3中的i)print(mean(s[i])
@DavidArenburg。谢谢你。akrun,谢谢你提醒我
Out <- vector('numeric', length(s))
for(i in 1:3) Out[i] <- mean(s[[i]])
Out
#[1] 7 3 6