如何用散列 map/dictionary 中的值替换数据框中的值?

How to replace values from a data frame with the values from a hash map/dictionary?

从 mtcars 数据框创建了一个散列。

counter <- 0
h <- hash()
for(i in 1:nrow(mtcars)){
  for(j in 1:length(names(mtcars))){
    counter <- counter + 1
    h[[as.character(mtcars[i,j])]] <- counter      }
}

我现在要做的是用我在 r 中创建的哈希映射中的值替换 mtcars 数据框中的值。

例如,mtcars 数据框中的 0 现在为 338,mtcars 数据框中的 1 将替换为 350。

我不明白你想做什么。您正在为递增但似乎没有任何特定含义的散列分配值。不管怎样,如果我理解你的话,这里是解决方案:

for(i in 1:nrow(mtcars)){
  for(j in 1:length(names(mtcars))){
    mtcars[i,j] <- h[[as.character(mtcars[i,j])]]
  }
}

这与您在第一部分中所做的非常相似,只是现在您要从哈希中获取并分配回 mtcars。

输出:

> mtcars
                    mpg cyl disp  hp drat  wt qsec  vs  am gear carb
Mazda RX4            12 330   14  37   16   6    7 338 350  351  351
Mazda RX4 Wag        12 330   14  37   16  17   51 338 350  351  351
Datsun 710           89 351   25  26   27  28   29 350 350  351  350
Hornet 4 Drive      342 330   36  37  269  39   40 350 338  274  350
Hornet Sportabout    45 341   69 323  247 116   51 338 338  274  352
Valiant              56 330   58  59  236  61   62 350 338  274  350
Duster 360           67 341   69 257   71 336   73 338 338  274  351
Merc 240D            78 351   80  81   82  83   84 350 338  351  352
Merc 230             89 351   91  92  115 247   95 350 338  351  352
Merc 280            265 330  113 114  115 116  106 350 338  351  351
Merc 280C           111 330  113 114  115 116  282 350 338  351  351
Merc 450SE          122 341  146 147  148 127  128 338 338  274  274
Merc 450SL          249 341  146 147  148 258  139 338 338  274  274
Merc 450SLC         243 341  146 147  148 149  150 338 338  274  274
Cadillac Fleetwood  166 341  157 158  159 160  161 338 338  274  351
Lincoln Continental 166 341  168 169  274 171  172 338 338  274  351
Chrysler Imperial   177 341  179 180  181 182  183 338 338  274  351
Fiat 128            188 351  190 279  280 193  194 350 350  351  350
Honda Civic         298 351  201 202  203 204  205 350 350  351  352
Toyota Corolla      210 351  212 213  313 215  216 350 350  351  350
Toyota Corona       221 351  223 224  225 226  227 350 338  274  350
Dodge Challenger    326 341  234 246  236 237  238 338 338  274  352
AMC Javelin         243 341  245 246  247 248  249 338 338  274  352
Camaro Z28          254 341  256 257  258 259  260 338 338  274  351
Pontiac Firebird    265 341  267 323  269 270  271 338 338  274  352
Fiat X1-9           276 351  278 279  280 281  282 350 350  351  350
Porsche 914-2       287 351  289 290  291 292  293 338 350  340  352
Lotus Europa        298 351  300 301  302 303  304 350 350  340  352
Ford Pantera L      309 341  311 312  313 314  315 338 350  340  351
Ferrari Dino        320 330  322 323  324 325  326 338 350  340  330
Maserati Bora       331 341  333 334  335 336  337 338 350  340  341
Volvo 142E          342 351  344 345  346 347  348 350 350  351  352