for循环到向量的值的最佳分配

时间:2014-11-08 16:46:57

标签: r

我已编写代码来生成一系列值A01, A02, A03, A04, A05, B01, B02, ..., G04, G05.我知道在R中我们通常不喜欢使用for循环。此代码有效,但它是处理此问题的最佳方法吗?

letters <- c("A", "B", "C", "D", "E", "F", "G")
numbers <- c(1:5)
l <- vector()
count <- 1
for(i in letters)
{
    for(j in numbers)
    {
        l[count] <- paste(i, j, sep="")
        count <- count + 1
    }
}

1 个答案:

答案 0 :(得分:2)

对R中的循环的厌恶有点过头了。如果您不处理过大的数据或复杂的分析,并且不需要创建性能代码,则可以使用循环。循环的潜在优势在于它们易于编写而不会出错。当您稍后再回到它时,很容易看到代码的工作原理。循环的冲突与R在引擎盖下的工作方式有些不同,但对于初学者而言,这并不是什么大不了的事。你可以使用一个循环,如果这是你喜欢的。

另一方面,我不会这样做。这是一种不太先进的方法,可以产生更清晰的代码(参见?outer):

l <- outer(LETTERS[1:7], as.character(c(1:5)), FUN=paste, sep="")
l <- as.vector(l)
l
#  [1] "A1" "B1" "C1" "D1" "E1" "F1" "G1" "A2" "B2" "C2" "D2" "E2" "F2" "G2" "A3"
# [16] "B3" "C3" "D3" "E3" "F3" "G3" "A4" "B4" "C4" "D4" "E4" "F4" "G4" "A5" "B5"
# [31] "C5" "D5" "E5" "F5" "G5"