我正在尝试在R中生成由50个元素组成的列表。在每个元素中应该是以下列方式的一对数字:
[[1]] 14 64
[[2]] 15 65
...
[[50]] 63 113
我已经尝试过编写这个循环,但是出现了一些问题,我无法弄明白:
cons<- list()
for (k in seq(1:50)){
for (i in 14:63){
for (j in 64:113){
cons[[k]] <- c(i,j)
}
}
}
我还尝试使用seq(lenght())
和seq_along()
作为循环逐个遍历所有值的方法,但仍然不起作用。我道歉这不是一个新问题,但在阅读完其他人后,我仍然没有找到解决此案的方法。
非常感谢您的帮助!
答案 0 :(得分:0)
有很多方法可以做到这一点..
X <- 14:63
Y <- 64:113
lapply(1:50, FUN = function(i) c(X[i], Y[i]))
## [[1]]
## [1] 14 64
##
## [[2]]
## [1] 15 65
##
## ....
## ....
## ....
##
## [[50]]
## [1] 63 113
或
mapply(FUN = function(x,y) {c(x,y)}, x = 14:63, y = 64:113, SIMPLIFY=FALSE)
或使用普通循环
X <- 14:63
Y <- 64:113
cons<- list()
for (k in seq(1:50)){
cons[[k]] <- c(X[k],Y[k])
}
OP代码中的错误是跟随创建50 * 50次迭代。所以生成的对是c(14,64), c(14,65) ... c(63,112), c(63,113)
。只有前50个被列入清单。这个过程只重复了50次。
for (i in 14:63){
for (j in 64:113){
cons[[k]] <- c(i,j)
}
}