如何在数据框列表上使用 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
函数似乎很奇怪,确实需要将未加引号的名称作为参数传递,指向您要保存的对象。这不利于处理列表中的对象。但这是 purrr
中 walk2
的可能解决方案(尽管如果你只想使用 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))
})
我有一系列数据框,我想将它们作为单独的 .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
函数似乎很奇怪,确实需要将未加引号的名称作为参数传递,指向您要保存的对象。这不利于处理列表中的对象。但这是 purrr
中 walk2
的可能解决方案(尽管如果你只想使用 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))
})