繁体   English   中英

根据 R 中另一个字符的顺序对字符重新排序

[英]Reorder character based on the order of another character in R

我有一个带有两个十六进制颜色代码的字符:

[1] "#F9CF7B" "#C5D4E1"

我还有一个 dataframe,其中一个因子变量的水平是这样的:

[1] "Treated" "Placebo"

这些水平可能会改变它的顺序(这是一个闪亮的应用程序,但这不是问题的重点)所以有时我会像这样订购因素[1] "Treated" "Placebo" ,其他时候这样, [1] "Placebo" "Treated" 我想要的是我的十六进制颜色代码字符来相应地改变它的顺序。

所以,我会有类似的东西。

[1] "Treated" "Placebo" -> [1] "#F9CF7B" "#C5D4E1"

[1] "Placebo" "Treated" -> [1] "#C5D4E1" "#F9CF7B"

我想用这两个因素创建一个 dataframe,然后根据因素的水平重新排序整个 dataframe,并提取重新排序的十六进制代码。

但是,我想知道是否有更简单的方法来做到这一点。

一个选项是传递一个命名向量来匹配factorlevels

nm1 <- setNames(c("#F9CF7B", "#C5D4E1"), c("Treated", "Placebo"))
v1 <- factor(sample(rep(c("Treated", "Placebo"), 3)))
nm1[levels(v1)]
 Placebo   Treated 
"#C5D4E1" "#F9CF7B" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM