读取 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)
如何定义要分配给 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)