我有一长串字符串需要根据预先指定的映射转换为数字.我已将此映射放入命名列表中,因此可以获得单个元素,但我无法弄清楚如何将其应用于向量
例如:
> 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
Run Code Online (Sandbox Code Playgroud)
这里的正确方法是什么?
您只需在代码中进行一些小的更改:
[而不是双精度[[.单括号匹配向量,而双括号匹配单个元素.像这样:
M <- c(a = 11, b = 22, c = 33)
X <- c("a", "b", "b", "a", "c")
unname(M[X])
[1] 11 22 22 11 33
Run Code Online (Sandbox Code Playgroud)