我希望使用嵌套循环为25个清单变量生成125个标签。 5个潜在变量 as_1_1到as_25_1 ... as_1_5到as_25_5 我似乎无法让代码工作。 我试过这个:
for (i in 1:25) for (j in 1:5)
{
AsLabs1 <- paste("as",1:i,1:j,sep="_")
}
AsLabs1
"as_1_1" "as_2_2" "as_3_3" "as_4_4" "as_5_5" "as_6_1" "as_7_2"
"as_8_3" "as_9_4" "as_10_5" "as_11_1" "as_12_2" "as_13_3" "as_14_4"
"as_15_5" "as_16_1" "as_17_2" "as_18_3" "as_19_4" "as_20_5" "as_21_1"
"as_22_2" "as_23_3" "as_24_4" "as_25_5"
但我需要为每个j(1到5)的值输出所有25个变量的循环,而不仅仅是5。 我意识到解决方案必须非常简单,我做错了。
答案 0 :(得分:2)
这应该这样做:
paste("as", apply(expand.grid(1:25, 1:5), 1, paste, collapse = "_"), sep = "_")
您自己的代码稍作修改即可使用:
AsLabs1 <- character()
for (i in 1:25) {
for (j in 1:5) {
AsLabs1 <- append(AsLabs1, paste("as", i, j, sep = "_"))
}
}
编辑修正了嵌套循环中的错误。
答案 1 :(得分:2)
我个人不会打扰嵌套循环,只需将paste
与“_”sep
和rep
函数一起使用{{1指定的{}和times
个参数。
each
... 如果您决定使用嵌套循环,可以稍微修改一下代码,添加AsLabs <- paste(rep("as", times = 25*5), rep (1:25, times = 5),
rep(1:5, each = 25), sep = "_")
函数:
rep
我不会使用嵌套循环,因为 我)这是不必要的复杂代码和 ii ) 更慢运行(我的粘贴方法比嵌套循环解决方案快约40倍[并且比安德斯答案中的apply方法快约7倍])
答案 2 :(得分:2)
我会使用outer
,
paste0('as_', outer(1:25, 1:5, paste, sep = '_'))