我相信這可能很簡單,但我幾個小時以來一直試圖解決這個問題。列印輸出是我想要我的矢量的方式。它正在做我想要的。
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結果存盤為向量?謝謝。
uj5u.com熱心網友回復:
根據 ?print
print 列印其引數并以不可見的方式回傳它(通過 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“輸出”和“輸出”之間的區別。很明顯 - printing 是在sum(i j)(sum這里是多余i j的sum,也是)上完成的,因為輸出僅與i值一起存盤。向量的初始化也是一個數值向量,其值為 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322687.html
