0

私は数字の3D行列を持っていますが、Rはどういうわけか数値データを文字として扱います。ロードするファイルは数値ベクトルです。しかし、それらを3Dベクトルに入れると、すべてのデータ番号は次のように「文字」として表示されます。

     [,1]   [,2]   [,3]   [,4]   [,5]   [,6]  
  [1,] "3.79" "3.79" "2.33" "2.33" "2.79" "2.79"
  [2,] "3.79" "3.79" "2.33" "2.33" "2.79" "2.79"
  [3,] "3.02" "3.02" "4.94" "4.94" "4.33" "4.33"
  [4,] "3.02" "3.02" "4.94" "4.94" "4.33" "4.33"
  [5,] "4.25" "4.25" "4.06" "4.06" "4.98" "4.98"
  [6,] "4.25" "4.25" "4.06" "4.06" "4.98" "4.98"
  [7,] "4.25" "4.25" "4.06" "4.06" "4.98" "4.98"
  [8,] "2.07" "2.07" "2.09" "2.09" "2.92" "2.92"

しかし、3Dマトリックスを挿入する前は、データは次のように表示されます。

[39965] 3.68230769 3.68230769 3.68230769 2.96454545
[39969] 2.96454545 3.93600000 3.93600000 3.93600000
[39973] 3.67769231 3.67769231 3.67769231 5.12750000
[39977] 5.12750000 5.12750000 3.05083333 3.05083333
[39981] 3.05083333 1.94166667 1.94166667 1.69000000
[39985] 1.69000000 1.69000000 2.01769231 2.01769231
[39989] 2.01769231 3.05692308 3.05692308 3.05692308
[39993] 3.72916667 3.72916667 3.72916667 2.65454545
[39997] 2.65454545 2.45583333 2.45583333 2.45583333

これが私のコードです:

for (i in 1: length(precipitation)) {
    precip <- read.csv(precipitation[i])
    precip[is.na(precip)] <- 0

    precip2<- precip[,-1]
    precip3<-as.vector(unlist(precip2))
    prep_data[,,i]<-matrix(precip3,ncol=200,nrow=200)
}

この問題を修正するためにコーディングを追加することは可能ですか?そのため、すべての3D行列要素は「数値」ではなく数値です。

4

2 に答える 2

1

as.numeric何かを数値に変換するために使用します。一般に、as.classそのクラス(数値、文字、係数、日付、data.frame、行列、その他多数)に変換します。

于 2013-03-02T20:29:36.320 に答える
0

colClasses引数を使用して、入力データを特定のクラスに強制変換できます。以下のコードは、コード内のread.csv呼び出しの代わりに使用される可能性があり、数値以外のエントリが検出された場合に警告を生成しますが、適切なデータは数値であることが保証されます。

precip <- read.csv(precipitation[i], colClasses="numeric" )
于 2013-03-02T19:04:50.210 に答える