如何使用 R 中的列表(映射功能)从 data.frame 更改一个变量的值?
How to change values of one variable from data.frame using list in R (mapping feature)?
我有一个这样的设置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。我也尝试了不同的方法来给出我想要的结果。但是,我想知道为什么 list 会这样。有什么方法可以使用列表来获得我想要的结果吗?谢谢。
我的结果应该是这样的:
c1 c2
1 Apple
2 Blue Berry
3 'C'
4 'D'
5 'E'
注意:映射 future using 列表来自我 class 的教科书示例。
编辑:为什么结果将不匹配列表元素替换为 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]]))
我有一个这样的设置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。我也尝试了不同的方法来给出我想要的结果。但是,我想知道为什么 list 会这样。有什么方法可以使用列表来获得我想要的结果吗?谢谢。 我的结果应该是这样的:
c1 c2
1 Apple
2 Blue Berry
3 'C'
4 'D'
5 'E'
注意:映射 future using 列表来自我 class 的教科书示例。
编辑:为什么结果将不匹配列表元素替换为 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]]))