我开始将 {drake} 用于数据生产管道。我使用的原始数据非常大,分为大约 130 个单独的(Stata)文件。因此,每个文件都应该单独处理。为了保持可读性,我使用target()
,transform()
并map()
指定我的计划。这看起来类似于下面的代码:
plan <- drake_plan(
dta_paths = list.files(my_folder, full.names = TRUE),
dfs = target(
read.dta13(dta_path),
transform = map(dta_path = dta_paths)
)
)
所以当我make()
计划时,我收到以下错误:
目标 dfs_dta_paths
警告:目标 dfs_dta_paths 警告:
条件的长度 > 1 并且只使用第一个元素
条件的长度 > 1 并且只使用第一个元素
条件的长度 > 1 并且只使用第一个元素
dfs_dta_paths 失败
错误:目标
dfs_dta_paths
失败。来电询问diagnose(dfs_dta_paths)
详情。错误信息:期望单个字符串值:[type=character; 范围=129]。
根据我从这个警告和错误消息中了解到的情况,不同文件路径的映射不起作用,完整的向量被传递给第一个函数调用。我阅读了https://books.ropensci.org/drake/static.html#map但它无助于解决问题。将路径向量转换为列表也无济于事。
从如何在不组合数据集的情况下将多个德雷克目标组合成一个交叉目标?我得到了预定义网格的想法,它实际上按建议工作。但是因为我只需要一个向量,而不是一个复杂的网格,这对我来说看起来像是过度设计。
我觉得我错过了一些明显的东西,但我无法发现它。任何想法我的代码有什么问题?
我知道https://books.ropensci.org/drake/plans.html#how-to-choose-good-targets,但由于我想在数据清理过程中进行迭代,我认为这会有所帮助dfs
如上所示创建目标。