我有一些有問題的sqldf列的CSV文件,導致一些數字列被歸類爲字符。我怎麼才能指定這些列的類,而不是每列?有很多列,我不一定想要爲它們指定類。如何在sqldf file.format中只指定一些colClasses?
這些問題列中的大部分數據都是零,所以當它們是數字(或實數)數據類型時,sqldf會將它們讀取爲整數。請注意,read.csv正確地分配類。 我不夠聰明,生成具有正確的性質(第50個值爲零,則值說,在第51行1.45)合適的數據集,但這裏是一個例子調用加載數據:
df <- read.csv.sql("data.dat", sql="select * from file",
file.format=list(colClasses=c("attr4"="numeric")))
返回此錯誤:
Error in sqldf(sql, envir = p, file.format = file.format, dbname = dbname, :
formal argument "file.format" matched by multiple actual arguments
我可以以某種方式使用函數read.table另一個電話摸出數據類型? 我可以按字符讀取所有列,然後將某些字符轉換爲數字嗎?有一小部分是字符,並且指定這些數字比所有數字列更容易。我想出了這個醜陋的部分解決方案,但它仍然無法與同樣的錯誤消息的最後一行:在參數nrows
df.head <- read.csv("data.dat", nrows=10)
classes <- lapply(df.head, class) # also fails to get classes correct
classes <- replace(classes, classes=="integer", "numeric")
df <- read.csv.sql("data.dat", sql="select * from file",
file.format=list(colClasses=classes))
謝謝,我愚蠢地認爲這個參數和read.csv的nrows差不多,並且已經通過了。但是,對於大文件,使用-1會爲呼叫增加一些時間。可惜我無法使用colClasses解決它。 –