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

How to use devtools::use_data on a list of data frames?

我有一系列数据框,我想将它们作为单独的 .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

我该怎么做?

你在你的列表列表上循环 Assign(my.list, newNameOfYourList) 。 然后使用 devtools::use_data(newNameOfYourList, overwrite = TRUE)。

use_data 函数似乎很奇怪,确实需要将未加引号的名称作为参数传递,指向您要保存的对象。这不利于处理列表中的对象。但这是 purrrwalk2 的可能解决方案(尽管如果你只想使用 base R,你可能 we-write 和 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))
})