【发布时间】:2021-11-19 17:09:54
【问题描述】:
我正在尝试读取一个文件,其中一列通常包含双精度值,但当值为中性时,它的值是“Calm”。因此,当我阅读文件时,我使用的是na = "Calm | calm",而在col_types = cols() 内部,我正在使用'9am wind speed (km/h)' = col_double() 解析列,下面是我制作小标题的函数。
generate_tibble <- function(filename) {
temp_tibble <- read_csv(
paste0("./data/", filename),
na = c('calm',"Calm"),
skip = 7,
col_types = cols(
'Date' = col_date(format = "%d/%m/%Y"),
'Evaporation (mm)' = col_double(),
'Sunshine (hours)' = col_double(),
'9am wind speed (km/h)' = col_double()
)
)
}
之后,我像这样读取了我的第一个文件:main_df <- generate_tibble(file_names[1]),我将使用列名与该文件合并其他文件。所以我使用以下代码运行循环。
for (i in file_names[2:length(file_names)]) {
temp <- generate_tibble(i)
main_df <- rbind(main_df, temp)
print(paste("FINISHED PARSING:", i))
}
但是当我运行循环时,我会得到这样的错误:
当我运行 problems(main_df) 时,它会显示以下消息:
我应该怎么做才能解决这个问题?提前致谢。
【问题讨论】:
-
根据
problems(main_df)中显示的内容,您可以手动检查(例如)第 2 行第 5 列中的内容。看起来它是 "" 这不是双精度数。您可以将其添加到na =。 -
旁注,您的循环没有有效地分配内存。 evodify.com/r-loops-are-slow
标签: r tidyverse na data-wrangling readr