当使用as.factor()时,得到<NA>。

问题描述 投票:0回答:1

我试图将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")
r boxplot na factors
1个回答
2
投票

也许要确保 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))

© www.soinside.com 2019 - 2024. All rights reserved.