如何处理“警告:对象'xxx'被多个数据调用创建”的问题

13

在检查一个 R 包时,我收到了警告

Warning: object 'xxx' is created by more than one data call

这是什么原因造成的,我该如何修复?

1个回答

14

当在软件包的data目录中有多个存储相同名称变量的RData文件时,会出现此警告。

要复现这个问题,我们创建一个软件包并将cars数据集保存两次,存储到不同的文件中:

library(devtools)    
create("test")   
dir.create("test/data")    
save(cars, file = "test/data/cars1.RData")
save(cars, file = "test/data/cars2.RData")   
check("test")

check 的输出包括以下行:

找到以下重要警告: 警告:对象“cars”由多个数据调用创建


如果收到此警告,您可以使用以下方法查找重复的变量名称:

rdata_files <- dir("test/data", full.names = TRUE, pattern = "\\.RData$")
var_names <- lapply(
  rdata_files,
  function(rdata_file)
  {
    e <- new.env()
    load(rdata_file, envir = e)
    ls(e)
  }
)

Reduce(intersect, var_names)
## [1] "cars"

这是否意味着无法拥有具有相同变量名称的多个RData文件?解决方案是将所有内容存储在一个RData文件中(例如,将多个数据框作为列表)吗? - jalapic
@jalapic:你可以使用一个包含数据框列表的变量,或者使用不同名称的单独变量。在上面的示例中,你可以将它们命名为cars1cars2等。选择哪种方式取决于用户使用起来最方便。 - Richie Cotton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接