我试图将data.frame列中的每个值转换成因子,这样我就可以在boxplot图中使用它们作为 "组"。然而,使用as.factor()和factor()函数,它把每个值都变成了.Find。列中有5种不同的细胞类型,CD8,CD4,Bcell,Mono,Gran--而且都变成了NA。
令人困惑的是,当我将函数应用于列中的某一行时,它的工作完全正常。数据框非常大(超过300万行)--这是否是问题的原因?
代码 。
> head(BP)
Methylation Cell_Type
1 0.03219298 CD8
2 0.11684228 CD8
3 0.04214158 CD8
4 0.26700497 CD8
5 0.34251732 CD8
6 0.34231208 CD8
> BP$Cell_Type <- as.factor(BP$Cell_Type)
> head(BP)
Methylation Cell_Type
1 0.03219298 <NA>
2 0.11684228 <NA>
3 0.04214158 <NA>
4 0.26700497 <NA>
5 0.34251732 <NA>
6 0.34231208 <NA>
不知道为什么会发生这种情况--任何建议都将受到极大的赞赏!谢谢
dput(head(BP))的输出。
> dput(head(BP))
structure(list(Methylation = c(0.0321929818018839,
0.116842281589967,
0.0421415803696093, 0.267004971824527, 0.342517319094108,
0.342312083101948
), Cell_Type = structure(list(Cell_Type = structure(c(3L, 3L,
3L, 3L, 3L, 3L), .Label = c("Bcell", "CD4", "CD8", "Gran", "Mono"
), class = "factor")), row.names = c(NA, 6L), class =
"data.frame")), row.names = c(NA,
6L), class = "data.frame")
也许要确保 Cell_Type
是先有角色?
BP <- tibble::tribble(
~Methylation, ~Cell_Type,
0.03219298, "CD8",
0.11684228, "CD8",
0.04214158, "CD8",
0.26700497, "CD8",
0.34251732, "CD8",
0.34231208, "CD8")
BP$Cell_Type <- as.factor(BP$Cell_Type)
print(BP)
Methylation Cell_Type
<dbl> <fct>
1 0.0322 CD8
2 0.117 CD8
3 0.0421 CD8
4 0.267 CD8
5 0.343 CD8
6 0.342 CD8
或者干脆
BP$Cell_Type <- as.factor(as.character(BP$Cell_Type))