r语言 - 你能解释一下替换函数是如何计算向量长度的吗?



我正在使用替换函数将列表中的数字替换为字符,但似乎需要向索引列表添加一个额外的值才能使代码正常工作。(见示例(

问题的简单版本是我有一个列表(0,1(,我想用"a"替换0,用"b"替换1。

replace(0:1, 0:1, c("a","b"))

生成以下结果

[1] "a" "1"
Warning message:
In x[list] <- values :
  number of items to replace is not a multiple of replacement length

当将索引列表扩展到 0:2 时,我得到所需的输出

> replace(0:1, 0:2, c("a","b"))
[1] "a" "b"

显然不明白替换功能是如何工作的,但我似乎无法弄清楚我错过了什么。

要替换的第二个参数是索引列表(不是值(,R 使用基于 1 的索引。 0:1 仅包含 1 个有效索引。因此,实际上,

replace(0:1, 0:1, c("a","b"))

相当于

replace(0:1, 1, c("a","b"))

这将生成警告消息。

看来您真的在从 plyr 包中寻找映射值的功能。例如

x <- c(2,3,5,7,11)
plyr::mapvalues(x,c(3,7),c(10,12))

这导致输出:

[1]  2 10  5 12 11

mapvalues 是 plyr 函数的一个示例,该函数在较新的封装 dplyr 中没有直接模拟。看到这个问题。不建议同时使用这两个包。 这就是为什么我使用更明确的plyr::mapvalues()而不是先library(plyr)然后简单地mapvalues()

相关内容

  • 没有找到相关文章

最新更新