我在使用循环保存文件时遇到问题。我首先编写了一个无需循环即可运行良好的函数。但是,它总是因循环而失败。 谁能告诉我原因吗?
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,file=
write.csv
的参数期望长度为 1。
你认为你正在使用 walk
迭代值,但您需要使用函数或 ~
准函数。
这个有效:
purrr::walk(path, ~ test(data=data, path=.))
.
也可以是.x
并且是要走的第一个参数中每个值的占位符:path
.一个“标准”函数的使用是
purrr::walk(path, function(P) test(data=data, path=P))
(这也有效)。
关于r - 使用 purrr::walk 保存文件 - 无效的 'description' 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70797483/