簡體   English   中英

R多重替換長度中的嵌套循環

[英]Nested loops in R multiple replacement length

我正在嘗試創建一個循環,該循環將生成以下內容:

[1] 1 1
[2] 1 2
[3] 1 3
[4] 2 1
[5] 2 2
[6] 2 3
[7] 3 1
[8] 3 2
[9] 3 3

使用以下代碼:

b<-list()
for (k in 1:9){
  for (i in 1:3) {
    for (j in 1:3){
      b[k]<- c(i,j)
    }
  }
}

但這不起作用

我不確定要返回哪種類型的結構,但是通過使用cbind()和R的便捷回收功能,您可以非常輕松地完成此操作,而無需進行昂貴的循環。 這將返回一個矩陣,這是最適合數字數據的結構。

cbind(rep(1:3, each=3), 1:3)
 #      [,1] [,2]
 # [1,]    1    1
 # [2,]    1    2
 # [3,]    1    3
 # [4,]    2    1
 # [5,]    2    2
 # [6,]    2    3
 # [7,]    3    1
 # [8,]    3    2
 # [9,]    3    3

這只是1:3與1:3的交叉連接

data.table::CJ(1:3, 1:3)

但是,如果您想使用循環,則可以

b <- list()
k <- 0
for (i in 1:3) {
    for (j in 1:3){
      k    <- k + 1
      b[[k]] <- c(i,j)
    }
}
b

如果可以將數據幀設置為輸出,則可以使用expand.grid

expand.grid(1:3,1:3)

似乎沒有簡單的方法可以控制哪個變量的移動速度更快,因此,如果需要第二個變量,則可以執行以下操作:

expand.grid(1:3,1:3)[,2:1]

#    Var2 Var1
#  1    1    1
#  2    1    2
#  3    1    3
#  4    2    1
#  5    2    2
#  6    2    3
#  7    3    1
#  8    3    2
#  9    3    3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM