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