r - 比熔化和 rbind 更快的替代方案

标签 r data.table rbind melt

我有一个很大的字符向量列表,看起来像这样:

List of 53095
 $ 30875  : chr [1:10] "<h2 class=\"buildings-page-title buildings- ...
 $ 30876  : chr [1:10] "<h2 class=\"buildings-page-title buildings- ...

我想创建一个包含单列的 data.table (或数据框)。所以我所做的是:

# require(purr); require(data.table)
clean.data<-function(input){
  output1<-map(input, melt)
  output2<-data.frame()
 for (i in 1:length(output1)) { 
  output2<-rbind(output2, output1[[i]])

 }
 return(output2)}

以测试数据为例,我想要的是

test<-list(c("hello", "world", "!"), c("Nice","to","meet","you"))
print(clean.data(test))
> print(clean.data(test))
  value
1 hello
2 world
3     !
4  Nice
5    to
6  meet
7   you

但是这个函数非常慢,也许是因为我的数据集很大,但我认为我的代码很糟糕。还有其他更有效的方法可以获得相同的结果吗?

最佳答案

更快的方法是取消列出它并创建一个单列data.frame

data.frame(value = unlist(test))

关于r - 比熔化和 rbind 更快的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317119/

相关文章:

rbind 不同类别的数据集

r - R 中的双向条形图

r - data.table 使用 setDT 修改父环境/奇怪的行为

r - R 3.0.3 rbind多个csv文件

r - 按组选择随机连续行作为组长度的比例

r - 基于不同的列子集和聚合原始数据表

R rbind - 参数列数不匹配

r - 优化 R 中的范围

c - 使用 Rmath.h 设置种子以与 R 进行比较

r - pdf绘图设备的绘图边距: y-axis label falling outside graphics window