1. ホーム
  2. r

[解決済み] Rエラー "sum not meaningful for factors"

2022-02-06 08:39:40

質問

rRna_RDP_taxonomy_phylumというファイルがあり、以下のデータがあります。

364  "Firmicutes"            39.31
244  "Proteobacteria"        26.35
218  "Actinobacteria"        23.54
65   "Bacteroidetes"         7.02
22   "Fusobacteria"          2.38
6    "Thermotogae"           0.65
3     unclassified_Bacteria  0.32
2    "Spirochaetes"          0.22
1    "Tenericutes"           0.11
1     Cyanobacteria          0.11

そして、このコードを使ってRで円グラフを作成しています。

if(file.exists("rRna_RDP_taxonomy_phylum")){
    family <- read.table ("rRna_RDP_taxonomy_phylum", sep="\t")
    piedat <- rbind(family[1:7, ],
                as.data.frame(t(c(sum(family[8:nrow(family),1]),
                                "Others",
                                sum(family[8:nrow(family),3])))))
    png(file="../graph/RDP_phylum_low.png", width=600, height=550, res=75)
    pie(as.numeric(piedat$V3), labels=piedat$V3, clockwise=TRUE, col=graph_col, main="More representative Phyliums")
    legend("topright", legend=piedat$V2, cex=0.8, fill=graph_col)
    dev.off()
    png(file="../graph/RDP_phylm_high.png", width=1300, height=850, res=75)
    pie(as.numeric(piedat$V3), labels=piedat$V3, clockwise=TRUE, col=graph_col, main="More representative Phyliums")
    legend("topright", legend=piedat$V2, cex=0.8, fill=graph_col)
    dev.off()
}

このコードを異なるデータファイルに対して使用したところ、正常に動作しましたが、adobeで提示されたファイルでは、以下のメッセージを返してクラッシュしました。

Error in Summary.factor(c(6L, 2L, 1L), na.rm = FALSE) : 
  sum not meaningful for factors
Calls: rbind -> as.data.frame -> t -> Summary.factor
Execution halted

なぜこのファイルでクラッシュするのか、この種のエラーを防ぐ方法はないのか、理解する必要があります。

ありがとうございます。

解決方法は?

を呼び出そうとすると、エラーが発生します。 sum(x)x はファクターです。

つまり、数字のように見える列の1つは、実際には係数であるということです(あなたが見ているのはテキスト表示です)。

簡単な修正、数値に変換する。 しかし、それは最初に文字に変換する介入ステップを必要とします。 次のように使います。

family[, 1] <- as.numeric(as.character( family[, 1] ))
family[, 3] <- as.numeric(as.character( family[, 3] ))

の詳細な説明については、中間 as.character のステップが必要であることは、この質問を見てください。 情報を失うことなく因数を整数値に変換するには?