我确信这是一个简单的解决办法,但我现在已经有一个小时了。
DataFrame看起来像这样:
> head(cpgval.filtered)
X CpG txpt tss
1 72923 cg15319295 XIST XIST
2 72924 cg03554089 XIST XIST
3 72925 cg12653510 XIST XIST
4 72926 cg05533223 XIST XIST
5 72927 cg11717280 XIST XIST
6 72928 cg20698282 XIST XIST
CellLine Meth
1 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.8141782
2 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.9349818
3 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.7045790
4 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.9728426
5 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.8467799
6 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged.P103.total.DNA.methylation.RepB 0.8038316
OrigOrder CultureConditions GroupNumber corr PVal
1 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 0.346066701 0.3616219
2 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 -0.396517739 0.2907117
3 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 -0.337107272 0.3750063
4 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 0.063036561 0.8720074
5 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 -0.007955937 0.9837932
6 7 hESCs.cultured.on.mouse.feeder.layer.and.mechanically.passaged 1 0.360234098 0.3409356
Passage
1 103
2 103
3 103
4 103
5 103
6 103
段落栏由8个不同的数字组成:
> unique(cpgval.filtered$Passage)
[1] 103 104 147 161 41 42 5 6
Levels: 103 104 147 161 41 42 5 6
我想按照通过顺序排列数据帧5,6,41,42,103,104,147,161
所以,我打电话给:
cpgval.filtered <- cpgval.filtered %>% dplyr::arrange(as.numeric(Passage))
我得到与原始数据帧相同的内容:
> unique(cpgval.filtered$Passage)
[1] 103 104 147 161 41 42 5 6
Levels: 103 104 147 161 41 42 5 6
看起来它是根据第一个数字而不是数字的实际值进行排序。 WTF?
答案 0 :(得分:2)
当我们告诉R将字符向量转换为因子时,它会根据字母顺序分配因子级别(因子的基础数字表示)。如果您的角色向量代表实际数字,事情会变得混乱。考虑:
factor(1:10)
[1] 1 2 3 4 5 6 7 8 9 10
Levels: 1 2 3 4 5 6 7 8 9 10
factor(as.character(1:10))
[1] 1 2 3 4 5 6 7 8 9 10
Levels: 1 10 2 3 4 5 6 7 8 9
请注意,在第一种情况下,因子原始数据是数字,因此会按预期分配因子级别。但是,在第二种情况下,转换的向量是 strings ,其中“1”和“10”首先是“按字母顺序”。
在您的情况下,我猜测Passage
列是作为字符数据导入而不是数字,而后者又被转换为违反直觉的因子级别。