如何在R中有条件地向向量追加递增后缀

如何在R中有条件地向向量追加递增后缀,r,vector,append,increment,R,Vector,Append,Increment,在R中有一个字符向量,其值重复出现: vec <- c('22','22','22','45','45','45','56','67','67','67','89','90') vec我们可以使用ave获得按“vec”分组的序列,然后将其与原始向量粘贴在一起 res <- paste(vec, ave(vec, vec, FUN=seq_along), sep="_") 或者我们可以使用make.unique make.unique(vec, sep="_") #[1]

在R中有一个字符向量,其值重复出现:

vec <- c('22','22','22','45','45','45','56','67','67','67','89','90')

vec我们可以使用
ave
获得按“vec”分组的序列,然后将其与原始向量粘贴在一起

 res <- paste(vec, ave(vec, vec, FUN=seq_along), sep="_")

或者我们可以使用
make.unique

 make.unique(vec, sep="_")
 #[1] "22"   "22_1" "22_2" "45"   "45_1" "45_2" "56"   "67"   "67_1" "67_2"
 #[11] "89"   "90"  
 tbl <- table(vec)
 names(tbl)[tbl==1]
 i1 <- vec %in% names(tbl)[tbl==1]
 res[i1] <-  sub('_.*', '', res[i1])
 res
 #[1] "22_1" "22_2" "22_3" "45_1" "45_2" "45_3" "56"   "67_1" "67_2" "67_3"
 #[11] "89"   "90"  
 make.unique(vec, sep="_")
 #[1] "22"   "22_1" "22_2" "45"   "45_1" "45_2" "56"   "67"   "67_1" "67_2"
 #[11] "89"   "90"