Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r中的for循环不工作_R_Loops_For Loop - Fatal编程技术网

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