我有一个像这样的设置data.frame
c1 <- c(1:5)
c2 <- c('A','B','C','D','E')
d <- data.frame(c1,c2)
d
d[,2] = as.character(d[,2])
typeof(d[,2])
mapping <- list(
'A'='Apple',
'B'='Blue Berry'
)
d[,2] <- as.character(mapping[d[,2]])
d
从我的data.frame中,我只想替换'A','B',并保留'C','D'等,但结果显示'C','D'等为NULL。我也尝试了不同的方法来得到我想要的结果。然而,我想知道为什么列表是这样的。有什么办法我可以使用列表有我想要的结果吗?谢谢。我的结果应该是:
c1 c2
1 Apple
2 Blue Berry
3 'C'
4 'D'
5 'E'
注意:映射future using list来自于我课上的一个教科书示例。
编辑:为什么结果将不匹配的列表元素替换为NULL?mapping[d[,2]]将映射列表细分为d[,2]。换句话说,它要求映射所有与d[,2]中的任意字母匹配的元素。你没有C D E作为映射中的元素,所以它会为这些值返回null。对此有许多可能的解决方案;这里有一个:
ifelse(as.character(mapping[d[,2]]) == "NULL", d[,2], as.character(mapping[d[,2]]))