R:嵌套For循环以生成连接字符串
我试图得到一个for循环来打印一系列连接的字符串。每个输出应该由一个组ID和一个子组ID组成。我希望输出只返回每个组的子组数,而不是所有组的所有可能子组数R:嵌套For循环以生成连接字符串,r,for-loop,R,For Loop,我试图得到一个for循环来打印一系列连接的字符串。每个输出应该由一个组ID和一个子组ID组成。我希望输出只返回每个组的子组数,而不是所有组的所有可能子组数 ## list the solution groups, must keep for name of output chalSolutions <- c("c_2k", "c_6k", "c_9k", "c_13k") ## create cluster limit for each solution group sol_limits
## list the solution groups, must keep for name of output
chalSolutions <- c("c_2k", "c_6k", "c_9k", "c_13k")
## create cluster limit for each solution group
sol_limits <- c(2,6,9,13)
## nested loop which ideally steps through each solution group, returning
## a string for only those clusters whose ID is less than or equal to the
## limit for each group
for(sol in chalSolutions){
for(lim in sol_limits){
chalClusters <- c(1:lim)
for(i in chalClusters){
obsv <- paste0("results_list$",sol,"_",i,"_obsv")
print(obsv)
}
}
}
而它应该是这样的:
[1] "results_list$c_2k_1_obsv"
[1] "results_list$c_2k_2_obsv"
[1] "results_list$c_2k_1_obsv"
...
[1] "results_list$c_2k_6_obsv"
[1] "results_list$c_2k_1_obsv"
...
[1] "results_list$c_2k_9_obsv"
[1] "results_list$c_2k_1_obsv"
...
[1] "results_list$c_2k_13_obsv"
[1] "results_list$c_6k_1_obsv"
[1] "results_list$c_6k_2_obsv"
[1] "results_list$c_6k_1_obsv"
...
[1] "results_list$c_6k_6_obsv"
[1] "results_list$c_6k_1_obsv"
...
[1] "results_list$c_6k_9_obsv"
...
[1] "results_list$c_2k_1_obsv"
[1] "results_list$c_2k_2_obsv"
[1] "results_list$c_6k_1_obsv"
...
[1] "results_list$c_6k_6_obsv"
[1] "results_list$c_9k_1_obsv"
...
[1] "results_list$c_9k_9_obsv"
[1] "results_list$c_13k_1_obsv"
...
[1] "results_list$c_13k_13_obsv"
在输入的等长列表之间考虑
mapply
(apply系列的elementwise循环成员)
obsv <- mapply(function(c, s) paste0("results_list$", c, "_", 1:s, "_obsv"),
chalSolutions, sol_limits)
obsv
# $c_2k
# [1] "results_list$c_2k_1_obsv" "results_list$c_2k_2_obsv"
#
# $c_6k
# [1] "results_list$c_6k_1_obsv" "results_list$c_6k_2_obsv"
# [3] "results_list$c_6k_3_obsv" "results_list$c_6k_4_obsv"
# [5] "results_list$c_6k_5_obsv" "results_list$c_6k_6_obsv"
#
# $c_9k
# [1] "results_list$c_9k_1_obsv" "results_list$c_9k_2_obsv"
# [3] "results_list$c_9k_3_obsv" "results_list$c_9k_4_obsv"
# [5] "results_list$c_9k_5_obsv" "results_list$c_9k_6_obsv"
# [7] "results_list$c_9k_7_obsv" "results_list$c_9k_8_obsv"
# [9] "results_list$c_9k_9_obsv"
#
# $c_13k
# [1] "results_list$c_13k_1_obsv" "results_list$c_13k_2_obsv"
# [3] "results_list$c_13k_3_obsv" "results_list$c_13k_4_obsv"
# [5] "results_list$c_13k_5_obsv" "results_list$c_13k_6_obsv"
# [7] "results_list$c_13k_7_obsv" "results_list$c_13k_8_obsv"
# [9] "results_list$c_13k_9_obsv" "results_list$c_13k_10_obsv"
# [11] "results_list$c_13k_11_obsv" "results_list$c_13k_12_obsv"
# [13] "results_list$c_13k_13_obsv"
谢谢,这很有效!现在的挑战是找出如何将这些输入到绘图函数中,其中每个chalCluster都根据chalSolution分面…我几乎猜这是一个。考虑找一个有图形细节的新的。是的,我通过走这条路线太复杂了。回到绘图板上,贴得更靠近最初创建结果列表的循环。谢谢你!我很确定有一个非嵌套的
for
循环解决方案。但我们需要关于绘图需求的细节。
obsv <- unlist(mapply(function(c, s) paste0("results_list$", c, "_", 1:s, "_obsv"),
chalSolutions, sol_limits, USE.NAMES = FALSE))
obsv
# [1] "results_list$c_2k_1_obsv" "results_list$c_2k_2_obsv"
# [3] "results_list$c_6k_1_obsv" "results_list$c_6k_2_obsv"
# [5] "results_list$c_6k_3_obsv" "results_list$c_6k_4_obsv"
# [7] "results_list$c_6k_5_obsv" "results_list$c_6k_6_obsv"
# [9] "results_list$c_9k_1_obsv" "results_list$c_9k_2_obsv"
# [11] "results_list$c_9k_3_obsv" "results_list$c_9k_4_obsv"
# [13] "results_list$c_9k_5_obsv" "results_list$c_9k_6_obsv"
# [15] "results_list$c_9k_7_obsv" "results_list$c_9k_8_obsv"
# [17] "results_list$c_9k_9_obsv" "results_list$c_13k_1_obsv"
# [19] "results_list$c_13k_2_obsv" "results_list$c_13k_3_obsv"
# [21] "results_list$c_13k_4_obsv" "results_list$c_13k_5_obsv"
# [23] "results_list$c_13k_6_obsv" "results_list$c_13k_7_obsv"
# [25] "results_list$c_13k_8_obsv" "results_list$c_13k_9_obsv"
# [27] "results_list$c_13k_10_obsv" "results_list$c_13k_11_obsv"
# [29] "results_list$c_13k_12_obsv" "results_list$c_13k_13_obsv"