有没有快速的方法将相同的值分配给向量中具有相同名称的元素?

时间:2017-02-13 16:23:10

标签: r

例如,向量

xx = c(1, 2, 3, 2, 1, 5, 8, 3, 2,4)

xx中每个元素的名称是:

 names(xx) = c('a', 'b','a','c', 'b', 'b', 'c','b', 'c', 'c')

有没有一种快速方法可以将xx中每个元素的值重新分配给具有相同名称的元素的最大值?例如,名为“a”的元素的最大值为3,因此我将为所有名称为“a”的元素分配3。

请注意我不想对xx的名称进行排序。那么,有没有一种快速的方法来实现这个目标而不使用循环?

1 个答案:

答案 0 :(得分:1)

ave解决方案是最好的。但是,这是使用dplyr

的替代方法
keys = c('a', 'b','a','c', 'b', 'b', 'c','b', 'c', 'c')
k<-data.frame(keys , xx) 
k %>% group_by(keys) %>% mutate(xx=max(xx))

Source: local data frame [10 x 2]
Groups: keys [3]

     keys    xx
   <fctr> <dbl>
1       a     3
2       b     5
3       a     3
4       c     8
5       b     5
6       b     5
7       c     8
8       b     5
9       c     8
10      c     8