从 R 中的循环输出创建向量

Creating a vector from a loop outputs in R

我正在尝试生成高效的代码来创建一个向量,该向量用于替换数据框中的变量名称以在更大的脚本中运行。更具体地说,我想将“A1”更改为“A.1”,将“A2”更改为“A.2”,依此类推直到“'Letter'.8。我成功地完成了一个循环,但是似乎无法将其输出到矢量。下面是代码和输出。我尝试了各种方法来基于类似问题对输出进行矢量化,但没有任何效果...

#1 定义字母向量并添加函数

     v1 = LETTERS[1:10]
     add = function(x, inc = 1) {
     y <- x + inc
     }

#create 循环以生成所需的名称

     d <- add(0)
     while (d < 9) {
     for (l in v1) {
     print(paste(l,".",d))
     }
     d <- add(d)
     }

这是您要找的吗?

paste0(rep(LETTERS[1:10],times=8),".",rep(1:8,each = 10))
[1] "A.1" "B.1" "C.1" "D.1" "E.1" "F.1" "G.1" "H.1" "I.1" "J.1" "A.2" "B.2" "C.2" "D.2" "E.2" "F.2" "G.2" "H.2" "I.2" "J.2" "A.3" "B.3"
[23] "C.3" "D.3" "E.3" "F.3" "G.3" "H.3" "I.3" "J.3" "A.4" "B.4" "C.4" "D.4" "E.4" "F.4" "G.4" "H.4" "I.4" "J.4" "A.5" "B.5" "C.5" "D.5"
[45] "E.5" "F.5" "G.5" "H.5" "I.5" "J.5" "A.6" "B.6" "C.6" "D.6" "E.6" "F.6" "G.6" "H.6" "I.6" "J.6" "A.7" "B.7" "C.7" "D.7" "E.7" "F.7"
[67] "G.7" "H.7" "I.7" "J.7" "A.8" "B.8" "C.8" "D.8" "E.8" "F.8" "G.8" "H.8" "I.8" "J.8"

您可以在基数 R 中使用 outer :

result <- c(outer(LETTERS[1:10], 1:8, paste, sep = '.'))
result

# [1] "A.1" "B.1" "C.1" "D.1" "E.1" "F.1" "G.1" "H.1" "I.1" "J.1" "A.2" "B.2" "C.2" "D.2"
#[15] "E.2" "F.2" "G.2" "H.2" "I.2" "J.2" "A.3" "B.3" "C.3" "D.3" "E.3" "F.3" "G.3" "H.3"
#[29] "I.3" "J.3" "A.4" "B.4" "C.4" "D.4" "E.4" "F.4" "G.4" "H.4" "I.4" "J.4" "A.5" "B.5"
#[43] "C.5" "D.5" "E.5" "F.5" "G.5" "H.5" "I.5" "J.5" "A.6" "B.6" "C.6" "D.6" "E.6" "F.6"
#[57] "G.6" "H.6" "I.6" "J.6" "A.7" "B.7" "C.7" "D.7" "E.7" "F.7" "G.7" "H.7" "I.7" "J.7"
#[71] "A.8" "B.8" "C.8" "D.8" "E.8" "F.8" "G.8" "H.8" "I.8" "J.8"

您可以使用append()函数:

v1 = LETTERS[1:10]
add = function(x, inc = 1) {
     y <- x + inc
 }
vct = c()
d <- add(0)
while (d < 9) {
  for (l in v1) {
     vct <- append(vct, paste(l,".",d))
  }
  d <- add(d)
}
print(vct)