在 R 中,从多个对象创建摘要数据框
In R, Create Summary Data Frame from Multiple Objects
我正在尝试创建一个 "summary" 数据框,其中包含有关我的 R 项目中一些对象的一些高级统计信息。我什至无法完成这个简单的任务,我尝试过使用 For 循环和 Apply 函数,但没有成功。
在 SO 上进行(大量)搜索后,我发现 For 循环可能不是性能最佳的选项,因此我愿意接受任何能够完成工作的解决方案。
我有三个对象:text1
text2
和 text3
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
。
我正在尝试创建一个 "summary" 数据框,其中包含有关我的 R 项目中一些对象的一些高级统计信息。我什至无法完成这个简单的任务,我尝试过使用 For 循环和 Apply 函数,但没有成功。
在 SO 上进行(大量)搜索后,我发现 For 循环可能不是性能最佳的选项,因此我愿意接受任何能够完成工作的解决方案。
我有三个对象:text1
text2
和 text3
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
。