读取 csv 文件时将所有逻辑列转换为双精度

Converting all logical columns to doubles when reading csv files

如何定义要分配给 col_double() 的所有列?下面的命令为我提供了要分配的已知列的列表。我只希望所有这些都是:

library(readr)
df<- read_delim("df.csv", 
              delim = ";", escape_double = FALSE, 
              col_types = cols(x1 = col_double()), 
              trim_ws = TRUE)

我一直在尝试读取包含数百万行和超过 100 列的 CSV 文件。当我写 CSV 时,我已经设法将它们全部定义为数字,但即便如此,当我尝试读回它时,它仍然给出逻辑列。

此外,我不能依靠简单地增加用于猜测的行数,而且我非常希望避免在阅读后转换列。

我的问题可能更基本,但我尝试了 read_csv()read_delim()fread()...但我只是不知道如何 select所有列都被读取为双精度。

您可以使用 .default 参数设置默认列类型

library(tidyverse)
data = iris %>% select(-Species)
write_delim(data, "df.csv")
df <- read_delim("df.csv", col_types = cols(.default = col_double()))
sapply(df, class)