如何映射具有相同级别但不同长度的因子的名称?

时间:2017-05-29 11:00:43

标签: r factors levels

我有两个因素compile 'com.facebook.react:react-native:+'tID具有相同级别,但长度分别为45000000和23000:

fff

有没有更快的方法将名称从因素> head(factor(tID)) Fungi Metazoa Fungi Fungi Fungi Fungi 227321 79782 52586 1658174 573508 88771 Levels: 2 7 9 11 14 16 17 19 20 22 23 24 32 33 34 38 39 41 42 43 47 48 51 52 54 56 61 68 69 72 75 81 85 86 103 104 106 114 119 120 122 124 125 128 134 140 141 142 143 144 148 154 158 159 162 163 165 167 171 172 173 174 179 ... 1985254 head(fff) [1] 4932 870730 34413 4932 4932 9606 Levels: 2 7 9 11 14 16 17 19 20 22 23 24 32 33 34 38 39 41 42 43 47 48 51 52 54 56 61 68 69 72 75 81 85 86 103 104 106 114 119 120 122 124 125 128 134 140 141 142 143 144 148 154 158 159 162 163 165 167 171 172 173 174 179 ... 1985254 映射到tID

我知道我可以使用ffflappy()执行此操作,但这些因素包含450万个元素,所以它有点慢。

1 个答案:

答案 0 :(得分:2)

namesmatch

names(fa) <- names(fb)[match(fa, fb)]

你得到:

> fa
 name_1  name_1  name_1  name_6  name_6  name_6 name_11 name_11 name_11 name_16 name_16 name_16 name_21 name_21 name_21 
      a       a       a       b       b       b       c       c       c       d       d       d       e       e       e 
Levels: a b c d e

对于问题中的新示例,这应该是:

names(fff) <- names(tID)[match(fff, tID)]

示例数据:

fa <- factor(rep(letters[1:5], each = 3))
fb <- factor(rep(letters[1:5], each = 5))
fb <- setNames(fb, paste0('name_',seq_along(fb)))