このR CSVデータを数値としてどのように宣言しますか?

このR CSVデータを数値としてどのように宣言しますか?

Vim csv.vimプラグインでCSVファイルのフィールドの周りにスペースを追加しました。これで、列クラスを数値(など)として宣言するのに問題がありますnum。負の値は、次の列でも問題を引き起こす可能性があります。データには空のフィールドがあります。データdata.csv

Test, test2, test3
    , 1    , 1
10.8, -1   , 1
1.1 , 2    , 2

パスワード

library('methods')
DF <- read.csv("/home/masi/Data/data.csv", header = T, sep = ",", colClasses=c('num','num'))

DF

出力

Error in methods::as(data[[i]], colClasses[i]) : 
  no method or default for coercing “character” to “num”
Calls: read.csv -> read.table -> <Anonymous>
Execution halted
  • 実行時に数値に変換できませんでしたcolClasses=c('num','num')
  • NA2番目の列にはマイナス記号()があるため、3番目の列の-1出力はと見なされます。

答え:3.3.3

答え1

AFAIKがnum無効原子ベクトルクラス存在するR

可能な値は、NA(type.convertを使用する場合のデフォルト値)、「NULL」(列をスキップするとき)、原子ベクトルクラスの1つ(論理、整数、数値、複素数、文字、基本)、または「係数」、「日付」または「POSIXct」。それ以外の場合は、「文字」を指定された型クラスに変換するには(パッケージメソッドの)asメソッドが必要です。

これを次のコードに置き換えると、コードが機能しますnumeric

> DF <- read.csv("data.csv", header = T, sep = ",", colClasses=c('num','num'))Error in methods::as(data[[i]], colClasses[i]) : 
  no method or default for coercing “character” to “num”

しかし、

> DF <- read.csv("data.csv", header = T, sep = ",", colClasses=c('numeric','numeric'))
> 
> DF
  Test test2 test3
1   NA     1     1
2 10.8    -1     1
3  1.1     2     2
> 

答え2

努力するリーダーtrim_ws=TRUEパラメータを含むパッケージread_delim()

R> readr::read_delim("data.csv", delim=",", col_types="dii", trim_ws=TRUE)
# A tibble: 3 × 3
   Test test2 test3
  <dbl> <int> <int>
1    NA     1     1
2  10.8    -1     1
3   1.1     2     2

関連情報