嵌套 for 循环中打印输出和存储向量的结果不同。是什么赋予了?
Results differ between printed output and stored vector in nested for loop. What gives?
我相信这可能很简单,但我已经花了好几个小时试图弄清楚这个问题。打印输出是我想要我的矢量的方式。它正在做我想要的。
x1<-c(1,2,3,4)
x2<-c(1,0)
len<- length(filename)
output <- vector("numeric", 8)
for (i in x1){
for(j in x2){
print(sum(i+j))
output[i]<- i
}
}
output
但是,我很困惑为什么会得到这两个不同的结果:
[1] 2
[1] 1
[1] 3
[1] 2
[1] 4
[1] 3
[1] 5
[1] 4
> output
[1] 1 2 3 4 0 0 0 0
如何将 print
结果存储为向量?谢谢
根据?print
print prints its argument and returns it invisibly (via invisible(x)).
我们可能需要初始化一个对象 (sum1
) 并开始将 sum(i + j)
的输出连接到对象,同时将每次迭代的输出更新回 'sum1'
sum1 <- NULL
output <- vector("numeric", 8)
for (i in x1){
for(j in x2){
sum1 <- c(sum1, i + j)
output[i]<- i
}
}
-输出
> sum1
[1] 2 1 3 2 4 3 5 4
关于print
和'output'的区别。很明显 - print
ing 是在 sum(i + j)
上完成的(sum
在这里是多余的,因为 i + j
也是 sum
),其中输出存储在单独 i
值。 vector 的初始化也是一个数值向量,其值为 0,长度为 8
> output <- vector("numeric", 8)
> output
[1] 0 0 0 0 0 0 0 0
初始化也可以这样
> output <- numeric(8)
其中 x1 值的长度为 4。因此,在前 4 次迭代之后,没有任何内容可以填充 0 值。
在R
中,这也可以用outer
来完成
> c(t(outer(x1, x2, FUN = `+`)))
[1] 2 1 3 2 4 3 5 4
或 sapply
> c(sapply(x1, `+`, x2))
[1] 2 1 3 2 4 3 5 4
我相信这可能很简单,但我已经花了好几个小时试图弄清楚这个问题。打印输出是我想要我的矢量的方式。它正在做我想要的。
x1<-c(1,2,3,4)
x2<-c(1,0)
len<- length(filename)
output <- vector("numeric", 8)
for (i in x1){
for(j in x2){
print(sum(i+j))
output[i]<- i
}
}
output
但是,我很困惑为什么会得到这两个不同的结果:
[1] 2
[1] 1
[1] 3
[1] 2
[1] 4
[1] 3
[1] 5
[1] 4
> output
[1] 1 2 3 4 0 0 0 0
如何将 print
结果存储为向量?谢谢
根据?print
print prints its argument and returns it invisibly (via invisible(x)).
我们可能需要初始化一个对象 (sum1
) 并开始将 sum(i + j)
的输出连接到对象,同时将每次迭代的输出更新回 'sum1'
sum1 <- NULL
output <- vector("numeric", 8)
for (i in x1){
for(j in x2){
sum1 <- c(sum1, i + j)
output[i]<- i
}
}
-输出
> sum1
[1] 2 1 3 2 4 3 5 4
关于print
和'output'的区别。很明显 - print
ing 是在 sum(i + j)
上完成的(sum
在这里是多余的,因为 i + j
也是 sum
),其中输出存储在单独 i
值。 vector 的初始化也是一个数值向量,其值为 0,长度为 8
> output <- vector("numeric", 8)
> output
[1] 0 0 0 0 0 0 0 0
初始化也可以这样
> output <- numeric(8)
其中 x1 值的长度为 4。因此,在前 4 次迭代之后,没有任何内容可以填充 0 值。
在R
中,这也可以用outer
> c(t(outer(x1, x2, FUN = `+`)))
[1] 2 1 3 2 4 3 5 4
或 sapply
> c(sapply(x1, `+`, x2))
[1] 2 1 3 2 4 3 5 4