如何在数据框列表中使用devtools :: use_data?

时间:2018-04-05 13:31:32

标签: r devtools

我有一系列数据框,我想将其保存为我的包中的单个.rda文件。

我可以使用devtools::use_data(my.df1, my.df2...)但我没有为每个数据框命名的对象,它们都存储在一个大的列表中。

我想要做的是为每个列表元素调用use_data,并使用列表名称作为.rda文件名。但是,当我执行以下操作时,我收到一条错误消息:

> lapply(my.list, devtools::use_data, overwrite = TRUE)
Error: Can only save existing named objects

我该怎么做?

2 个答案:

答案 0 :(得分:3)

use_data函数似乎非常奇怪,确实要求将未加引号的名称作为指向要保存的对象的参数传递。这不利于处理列表中的对象。但是这里有walk2来自purrr的可能解决方案(如果您只想使用基数R,我们可能会使用mapply()编写)

library(purrr)
library(devtools)

walk2(my.list, names(my.list), function(obj, name) {
  assign(name, obj)
  do.call("use_data", list(as.name(name), overwrite = TRUE))
})

答案 1 :(得分:1)

将循环Assign(my.list,newNameOfYourList)循环到列表列表中。 然后使用devtools :: use_data(newNameOfYourList,overwrite = TRUE)。