2

私はRが初めてで、以下のコードを使用してデータフレームを数値行列に変換しようとしています

expData <- read.table("GSM469176.txt",header = F)
expVec <- as.numeric(as.matrix(exp_data))

as.numericなしでas.matrixを使用すると、いくつかの数値が返されます(以下のように)

0.083531    0.083496    0.083464    0.083435    0.083406    0.083377    0.083348"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
[9975] "-0.00285  -0.0028274  -0.0028046  -0.0027814  -0.0027574  -0.0027319  -0.0027042  

しかし、as.numericを入れると、それらはすべて「NA」に変換されます

誰かが以前にこの質問をしたことがある場合は申し訳ありませんが、私の問題を解決する投稿が見つかりません。前もって感謝します

4

2 に答える 2

5

2つの問題があります。まず、データフレームの構造を調べると、最初の列が文字であることがわかります。

head(expData)[, 1:4]

            V1         V2         V3         V4
1 YAL002W(cer) 6.1497e-02 6.2814e-02 6.4130e-02
2 YAL002W(par) 7.1352e-02 7.3262e-02 7.5171e-02
3 YAL003W(cer) 2.2428e-02 3.8252e-02 5.4078e-02
4 YAL003W(par) 2.6548e-02 3.6747e-02 4.6947e-02
5 YAL005C(cer) 2.4023e-05 2.3243e-05 2.2462e-05
6 YAL005C(par) 2.0252e-02 2.0346e-02 2.0440e-02

したがって、データフレーム全体を数値に変換しようとすると、期待どおりに機能しません。

次に、as.matrix()の後にas.numeric()を実行します。これは、行列をベクトルに変換します。

x <- as.numeric(as.matrix(expData))
# Warning message:
# NAs introduced by coercion 
class(x)
[1] "numeric"
dim(x)
# NULL not a matrix
length(x)
# [1] 14261302

これを試してみることをお勧めします:

rownames(expData) <- expData$V1
expData$V1 <- NULL
expData <- as.matrix(expData)
dim(expData)
# [1] 7502 1900
class(expData[, 1])
# [1] "numeric"
于 2013-03-19T02:05:41.837 に答える
0

R何かを数値に変換する方法がわからない 場合は、NA を取得します。

具体的には、出力の引用符は、1 つ (複数) の LNG 文字列の数字があることを示しています。これが悪い理由を確認するには、次のことを試してください。 as.nmeric("-0.00285 -0.0028274")

生データがどのようなものかはわかりませんが、@alexwhanが述べたように、原因はおそらくあなたの呼び出しにありますread.table

これを修正するには、sep 引数を明示的に設定してみてください (つまり、ヘッダーがある場所の隣に)

シンプルなテキスト エディター (Word ではなく、TextEdit.app またはメモ帳) で raw ファイルを開き、それらがどのように分離されているかを確認することをお勧めします。M 推しは

   ..., sep="\t" 

トリックを行う必要があります。

于 2013-03-19T02:39:58.493 に答える