例如,向量
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的名称进行排序。那么,有没有一种快速的方法来实现这个目标而不使用循环?
答案 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