比 melt 和 rbind 更快的替代品
Faster alternative to melt and rbind
我有一大堆字符向量,看起来像这样:
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
但是这个函数非常慢,也许是因为我的数据集很大,但我认为我的代码很糟糕。有没有其他更有效的方法来获得相同的结果?
更快的方法是 unlist
它并创建一个列 data.frame
data.frame(value = unlist(test))
我有一大堆字符向量,看起来像这样:
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
但是这个函数非常慢,也许是因为我的数据集很大,但我认为我的代码很糟糕。有没有其他更有效的方法来获得相同的结果?
更快的方法是 unlist
它并创建一个列 data.frame
data.frame(value = unlist(test))