我在R中有一个数据框。此数据框的一列取值从1到6。我有另一个数据框映射此列。有什么方法可以替换此列中的值,而无需使用循环(使用某些函数)?

     [,1] [,2]
[1,] "1"  "A"
[2,] "2"  "B"
[3,] "3"  "C"
[4,] "4"  "D"

[1] 4 2 2 3 4 1 4 4

是否存在不使用循环就返回以下向量的函数?
[1] D B B C D A D D

最佳答案

你可以试试

v1 <- c(4, 2, 2, 3, 4, 1, 4, 4)
LETTERS[v1]
#[1] "D" "B" "B" "C" "D" "A" "D" "D"

假设您的映射数据集第二列不只是“LETTERS”
d1 <- data.frame(Col1=c(1,3,4,2), Col2=c('j1', 'c9', '19f', 'd18'),
                     stringsAsFactors=FALSE)

unname(setNames(d1[,2], d1[,1])[as.character(v1)])
#[1] "19f" "d18" "d18" "c9"  "19f" "j1"  "19f" "19f"

或者
d1$Col2[match(v1, d1$Col1)]
#[1] "19f" "d18" "d18" "c9"  "19f" "j1"  "19f" "19f"

关于r - 如何通过R中的字典映射列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28751879/

10-12 17:16