我有一长串字符串,需要根据预先指定的映射转换为数字。我已将此映射放入命名列表中,因此可以获得单个元素,但我无法弄清楚如何将其应用于向量
例如:
> X <- c("a", "b", "b", "a", "c")
> M <- list(a = 11, b = 22, c = 33)
> M[["a"]]
[1] 11
> M[[X]]
Error in M[[X]] : recursive indexing failed at level 2
> sapply(X, M)
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'M' of mode 'function' was not found
这里的正确方法是什么?
答案 0 :(得分:9)
另一种类似的方法:
R> unlist(M[X])
a b b a c
11 22 22 11 33
答案 1 :(得分:5)
您只需在代码中进行一些小的更改:
[
而不是双[[
。单括号匹配向量,而双括号匹配单个元素。像这样:
M <- c(a = 11, b = 22, c = 33)
X <- c("a", "b", "b", "a", "c")
unname(M[X])
[1] 11 22 22 11 33