你能解释一下替换函数是如何计算向量长度的吗?
Can you explain how replace function is calculating vector length?
我正在使用替换函数用列表中的字符替换数字,但似乎需要向索引列表添加一个额外的值才能使代码正常工作。 (参见示例)
by 问题的简单版本是我有一个列表 (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 包中寻找 mapvalues 的功能。例如,
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()
.
我正在使用替换函数用列表中的字符替换数字,但似乎需要向索引列表添加一个额外的值才能使代码正常工作。 (参见示例)
by 问题的简单版本是我有一个列表 (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 包中寻找 mapvalues 的功能。例如,
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()
.