[英]Nested loop in R: number of items to replace is not a multiple of replacement length
[英]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.