首页 > 解决方案 > 如何创建一个循环粘贴到R中循环迭代的末尾

问题描述

我正在尝试编写创建字符向量的循环。我希望每个元素在添加更多字符串的同时复制最后一个元素。例如:

f <- "y ~ x1" "y ~ x1 + x2" "y ~ x1 + x2 + x3" "y ~ x1 + ... + x100"

到目前为止,我有:

f <- character(100)
for(i in 1:100){
  f[i] <- paste0("y ~ x1 +",i) 
}

[1] "y ~ x1 +1" "y ~ x1 +2" "y ~ x1 +3" "y ~ x1 +4"

但无法弄清楚如何将每个最后一次迭代与每个新迭代结合起来。任何帮助表示赞赏!

谢谢

标签: rloopsiteration

解决方案


试试这个方法。您可以结合两个paste0()广告使用循环中的索引以智能方式创建公式。这里的代码:

#Code
f <- character(100)
#Loop
for(i in 1:100){
  f[i] <- paste0("y ~ ",paste0("x",1:i,collapse = ' + ')) 
}

输出(只有一些值):

head(f)
[1] "y ~ x1"                          "y ~ x1 + x2"                    
[3] "y ~ x1 + x2 + x3"                "y ~ x1 + x2 + x3 + x4"          
[5] "y ~ x1 + x2 + x3 + x4 + x5"      "y ~ x1 + x2 + x3 + x4 + x5 + x6"

或简化版本lapply()

#Code2
f <- lapply(1:100,function(i) paste0("y ~ ",paste0("x",1:i,collapse = ' + ')) )

它将产生相同的输出。


推荐阅读