这里是获取文件名词干,从路径,词干和后缀组合文件名,读取文件,删除变量并再次保存文件的功能。在此简化版本中,读取主干和保存主干是相同的,而我只删除了一个变量。
library(tidyverse)
strip_cps <- function(X, path = path){
readRDS(paste0(path = path, X, ".RDS")) %>%
select(-"YEAR") %>%
saveRDS(file = paste0(path = path, X, ".RDS"))
}
这里是一个函数,可重复调用前一个函数,每个茎一次。
compact_cps <- function(stems, path){
stems %>%
walk(strip_cps0(., path=path))
}
这是我的数据的微观版本。将数据目录替换为您自己系统上的目录
df1 <- tibble(YEAR = 1, SEX = 1)
df2 = df1[1,] + c(1, 1)
saveRDS(df1, file = paste0("./CPS_1962-2018/", "df1", ".RDS"))
saveRDS(df2, file = paste0("./CPS_1962-2018/", "df2", ".RDS"))
在此数据上运行上述代码会收到以下错误:
Error in gzfile(file, "rb") : invalid 'description' argument
从回溯中,我得知gzfile
被readRDS
调用。使用debug
重新运行代码,我了解到gzfile的description参数是
chr{1:2] "./CPS_1962-2018/df1.RDS" "./CPS_1962-2018/df1.RDS"
就是长度为2的字符向量。
现在,我的代码似乎有个bug的特征,就是我无法解决自己不在我所认为的位置的问题。但是在我看来,步行是通过调用函数stems = c(“df1”, ”df2”)
通过%>%
接收到字符向量compact_cps
作为其主要论点,然后将整个向量交给strip_cps
一次处理一个元素。
似乎我比走那步更想念东西,但我看不见。
答案 0 :(得分:1)
尝试
compact_cps <- function(stems, path){
stems %>%
walk(strip_cps, path=path))
}
walk的第一个参数是向量茎,第二个参数是要为向量中的每个元素调用的函数的名称,然后是该函数的任何其他参数。