繁体   English   中英

在 map function 循环中使用文件名保存 csv 个文件

[英]Save csv files using filenames in a map function loop

我正在使用 map function 在一个文件夹中循环一些 csv 文件。我想使用 csv 的名称的切片版本来保存循环的结果。但是在尝试将结果保存到 csv 时出现错误.这是我的代码

library(tidyverse)
library(fs)
library(dismo)

file_paths <- fs::dir_ls("loop/")

file_paths %>%
  map(function (path){
    all_data <- read_csv(path, show_col_types = FALSE)
    name <- tools::file_path_sans_ext(basename(file_paths))
    print(name)
    t_max <- all_data[,c(2)]
    t_min <- all_data[, c(3)]
    rain_fall <- all_data[,c(4)]
    res <- data.frame(biovars(t_max, t_min, rain_fall))
    myfile = sprintf("%s_bio.csv", name)
    write_csv(res, file=myfile, col_names = TRUE)
  })

错误:

Error in if (is_url(path)) { : the condition has length > 1

您在full_paths中使用map的完整向量,您应该只使用单一path

file_paths %>%
  map(function (path){
    all_data <- read_csv(path, show_col_types = FALSE)
    name <- tools::file_path_sans_ext(basename(path))
    print(name)
    t_max <- all_data[,c(2)]
    t_min <- all_data[, c(3)]
    rain_fall <- all_data[,c(4)]
    res <- data.frame(biovars(t_max, t_min, rain_fall))
    myfile = sprintf("%s_bio.csv", name)
    write_csv(res, file=myfile, col_names = TRUE)
  })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM