簡體   English   中英

使用Plyr映射值重命名級別會產生意外結果

[英]Plyr mapvalues to rename levels giving unexpected result

我正在嘗試使用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"))

回答:

>z
x y
1 A A
2 m C
3 C C
4 C d
5 C d
6 A C

可以看出, $x[5]應該為“ d”, $y[6]應該為“ m”。 我也嘗試將“ as.character”應用於“ from”“ to”向量,但是它也不起作用。 我正在使用RStudio,Mac版本,R版本3.5.2(2018-12-20)-“ Eggshell Igloo”。 感謝幫助。

如果我們看一下輸出

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”相同的向量,而levels長度不同

如果我們將此輸出分配給levels(z$y )`,則存在長度差異。 我們可以對整個列進行分配

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

或改變levels與相應的levels

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM