使用 purrr::walk 保存文件 - 'description' 参数无效

Using purrr::walk to save the files - invalid 'description' argument

我在使用循环保存文件时遇到问题。我首先编写了一个无需循环即可运行良好的函数。但是,它总是因循环而失败。 谁能告诉我原因吗?

a<-c(1,2,3)
b<-c(4,5,6)
c<-c(7,8,9)

data<-data.frame(a,b,c)
path<-list('path1/', 'path2/')

test<-function(data,path){
  write.csv(data,file = paste0(path,'result.csv'))
}

purrr::walk(path, test(data=data, path=path))
# Warning in if (file == "") file <- stdout() else if (is.character(file)) { :
#   the condition has length > 1 and only the first element will be used
# Error in file(file, ifelse(append, "a", "w")) : 
#   invalid 'description' argument

有关 condition has length 的警告是因为您传递的 path=path 长度为 2,而 write.csvfile= 参数期望长度为 1。

您认为您正在使用 walk 来迭代值,但您需要使用函数或 ~ 准函数。

这个有效:

purrr::walk(path, ~ test(data=data, path=.))

. 也可以是 .x,它是要走的第一个参数中每个值的占位符:path。 “标准”函数使用是

purrr::walk(path, function(P) test(data=data, path=P))

(也有效)。