我想制作几个数字列表,然后将它们连接起来,即
列表1 = 1,1,1,1
列表2 = 2,2,2,2
列表3 = 3,3,3,3
最终名单= 1,1,1,2,2,2,2,3,3,3,3
我尝试了以下内容来创建列表1到3
ageseq <- c(1,2,3)
n <- 3
n2 <- 4
for (i in 1:n){
for (j in 1:n){
age[i] <- c(rep(ageseq[j],n2))
}
}
产生以下错误,
In age[i] <- c(rep(ageseq[j], n2)) :
number of items to replace is not a multiple of replacement length
因为age1,age2和age3不存在。
我的代码中缺少什么?实际上,我需要连接70多个数字列表。
答案 0 :(得分:3)
所以问题是你要用长度为4的元素(age[i]
)替换长度为1的元素(rep(ageseq[j], n2)
)。你没有连接列表,你试图用数字列表替换数字i元素,这会导致警告。
如果您想按照指定的方式进行操作,则需要使用循环:
ageseq <- c(1,2,3)
n <- 3
n2 <- 4
age <- c()
for (j in 1:n){
age <- c(age, rep(ageseq[j],n2))
}
将根据需要将单独的列表连接成一个。有人提出的另一个选择是使用:age <- rep(1:3,each=4)
。要创建单独的列表,您可以使用循环:
ageseq <- c(1,2,3)
n <- 3
n2 <- 4
age_list <- list()
for (j in 1:n){
age_list[[j]] <- rep(ageseq[j],n2)
}
然后age_list[[1]]
将是一个列表,age_list[[2]]
将是两个等的列表。
答案 1 :(得分:0)
您可以尝试:
unlist(lapply(1:3, rep, 4))