在 R 中,从多个对象创建摘要数据框

In R, Create Summary Data Frame from Multiple Objects

我正在尝试创建一个 "summary" 数据框,其中包含有关我的 R 项目中一些对象的一些高级统计信息。我什至无法完成这个简单的任务,我尝试过使用 For 循环和 Apply 函数,但没有成功。

在 SO 上进行(大量)搜索后,我发现 For 循环可能不是性能最佳的选项,因此我愿意接受任何能够完成工作的解决方案。

我有三个对象:text1 text2text3 of class "Large Character (vectors)"(假设我可能正在探索这些对象并将创建一个 NLP他们的预测模型)。一旦加载到 R 中,每个文件的大小都 > 250 MB(每个文件超过 100 万 "rows")。

我的目标:将 object.size() length()max(nchar()) 的结果存储在我的 3 个对象的 table 中。

方法一:使用 Apply() 函数

问题:我没有成功地将多个函数应用到单个对象。我知道如何像 lapply(x, mean) 这样简单地应用,但我在这里做不到。

方法 2:使用 For 循环绑定行

我喜欢这个解决方案,因为我几乎知道如何实施它。许多 SO 用户说这是一种糟糕的方法,但我缺乏其他想法。

sources <- c("text1", "text2", "text3")
text.summary <- data.frame()

for (i in sources){ 
    text.summary[i ,] <- rbind(i, object.size(get(i)), length(get(i)),
   max(nchar(get(i))))
}

问题:这个 returns 错误 data length exceeds size of matrix - 我知道我可以定义我的数据框的结构(第 2 行),但我看到了太多关于其他问题的反馈建议不要这样做。

感谢您帮助我了解完成此任务的正确方法。我知道如果我连这个简单的问题都搞不清楚,我在做 NLP 时会遇到麻烦,但 R 是我第一次涉足编程。哇哦!

举个例子:

do.call(rbind, lapply(list(text1,text2,text3), 
       function(x) c(objectSize=c(object.size(x)),length=length(x),max=max(nchar(x)))))

您将获得 matrix。如果需要,您可以稍后强制 data.frame