Plyr映射值以重命名级别,从而产生意外结果

Plyr映射值以重命名级别,从而产生意外结果,r,R,我试图使用mapvalues重命名一个因子的一长串级别。由于它似乎工作不正常,我制作了一个简单的示例来说明这个问题 x <- c("a", "b", "c","c","d","a") y <- c("a", "c", "c","d","d","b") z<-data.frame(cbind(x,y)) levels(z$y)<-mapvalues(z$y, c("a", "c","b"), c("A", "C","m")) levels(z$x)<-mapvalu

我试图使用mapvalues重命名一个因子的一长串级别。由于它似乎工作不正常,我制作了一个简单的示例来说明这个问题

x <- c("a", "b", "c","c","d","a")
y <- c("a", "c", "c","d","d","b")
z<-data.frame(cbind(x,y))

levels(z$y)<-mapvalues(z$y, c("a", "c","b"), c("A", "C","m"))
levels(z$x)<-mapvalues(z$x, c("a", "c","b"), c("A", "C","m"))

可以看出,
$x[5]
应该是“d”,而
$y[6]
应该是“m”。我还尝试将“as.character”应用于“from”“to”向量,但也不起作用。我在RStudio工作,Mac版本,R版本3.5.2(2018-12-20)-“蛋壳冰屋”。感谢您的帮助。

如果我们查看

plyr::mapvalues(z$y, c("a", "c","b"), c("A", "C","m"))
#[1] A C C d d m
#Levels: A m C d
它是一个与“x”长度相同的向量,而
级别
长度不同

如果我们将此输出分配给
级别(z$y
)`,则存在长度差异。我们可以对整列进行赋值

z$y <- plyr::mapvalues(z$y, c("a", "c","b"), c("A", "C","m"))

不要分配到
级别
或ELSE您必须分配输出
级别的
级别
(z$y)谢谢,现在我明白了,应该分配给变量:z$x只想指出,
plyr
在一段时间前已经退役,主要是支持
dplyr
,以及其他tidyverse软件包
z$y <- plyr::mapvalues(z$y, c("a", "c","b"), c("A", "C","m"))
levels(z$y) <- levels(plyr::mapvalues(z$y, c("a", "c","b"), c("A", "C","m")))