基于 R 中的逻辑测试创建递增标签

creating an incremented label based on a logical test in R

假设我在数据框中有一个向量 data,包含 0 和 1,如下所示:

v1<- c(0,0,1,1,0,1,0)

我想要一个新的向量,其值是a或b,基于v1中的值是0还是1。此外,我希望第一个a是a1,第二个是a2 .我希望第一个 b 为 b1,第二个为 b2,等等。输出向量 v2 看起来像

c(a1,a2,b1,b2,a3,b3,a4)

我知道我可以做一个简单的 ifelse 语句,这样

data$v2 <- ifelse(data$v1=0,'a','b')

但是,我不知道如何添加一个递增的整数。

一种可能:

paste0(letters[v1 + 1], ave(v1, v1, FUN = seq_along))
#   [1] "a1" "a2" "b1" "b2" "a3" "b3" "a4"

您可以使用 c("a", "b") 而不是 letters。但是,letters = 7 次击键对比 c("a", "b") = 11 次击键和 6 次 shift