【发布时间】:2020-01-13 04:39:32
【问题描述】:
我正在使用一个简单的data.frame 对象,并且只想为其分配一个简单的列,该列是从character 对象中提取的。问题是这些值是按错误的顺序提取的。
我有一个如下所示的数据框:
>df
Sample ID
1 558 Benign_or_BL.FFPE
2 105 Benign_or_BL.FFPE
3 37 Early.FFPE
4 79 Early.FFPE
5 180 Early.FFPE
6 133 Late.FFPE
7 152 Late.FFPE
8 265 Late.FFPE
9 558 Benign_or_BL.Fresh
10 105 Benign_or_BL.Fresh
11 573 Benign_or_BL.Fresh
12 374 Benign_or_BL.Fresh
13 307 Benign_or_BL.Fresh
14 403 Benign_or_BL.Fresh
15 37 Early.Fresh
16 79 Early.Fresh
17 180 Early.Fresh
18 584 Early.Fresh
19 482 Early.Fresh
20 500 Early.Fresh
21 571 Early.Fresh
22 572 Early.Fresh
23 371 Early.Fresh
24 133 Late.Fresh
25 152 Late.Fresh
26 265 Late.Fresh
27 65 Late.Fresh
28 422 Late.Fresh
29 562 Late.Fresh
30 485 Late.Fresh
31 492 Late.Fresh
32 518 Late.Fresh
我想做的只是为df$ID列的每个级别分配一个十六进制颜色代码。
我的第一次尝试是创建一个包含与df$ID 上的级别数相同数量的颜色的对象。这是我所做的:
> levels(as.factor(targetsJ$ID2))
[1] "Benign_or_BL.FFPE" "Benign_or_BL.Fresh" "Early.FFPE" "Early.Fresh" "Late.FFPE"
[6] "Late.Fresh"
现在,我按照完全相同的顺序创建一个具有我想要的颜色的对象:
> colors <- c("#9b9dff","#5153ff","#0003e0","#f6a5aa","#ee4c55","#c4131d")
现在,添加包含颜色编码的额外列,我得到如下内容:
> df$colcode <- colors[as.factor(targetsJ$ID)]
> head(df, n=10)
Sample ID colcode
1 558 Benign_or_BL.FFPE #9b9dff
2 105 Benign_or_BL.FFPE #9b9dff
3 37 Early.FFPE #0003e0
4 79 Early.FFPE #0003e0
5 180 Early.FFPE #0003e0
6 133 Late.FFPE #ee4c55
7 152 Late.FFPE #ee4c55
8 265 Late.FFPE #ee4c55
9 558 Benign_or_BL.Fresh #5153ff
10 105 Benign_or_BL.Fresh #5153ff
如您所见,颜色代码的顺序与对象 colors 上的不同。
我期待的是这样的:
> head(df, n=10)
Sample ID colcode
1 558 Benign_or_BL.FFPE #9b9dff
2 105 Benign_or_BL.FFPE #9b9dff
3 37 Early.FFPE #5153ff
4 79 Early.FFPE #5153ff
5 180 Early.FFPE #5153ff
6 133 Late.FFPE #0003e0
7 152 Late.FFPE #0003e0
8 265 Late.FFPE #0003e0
9 558 Benign_or_BL.Fresh #f6a5aa
10 105 Benign_or_BL.Fresh #f6a5aa
这里发生了什么? 非常感谢任何帮助。
【问题讨论】:
标签: r