0

我想按特定字符串拆分数据框中的一些数据并计算频率。

在玩弄了一些方法之后,我想出了一个方法,但是我的结果有一点错误。

例子:

数据框数据文件:

data
abc hello
hello
aaa
zxy
xyz

列表:

list
abc
bcd
efg
aaa

我的代码:

lapply(list$list, function(x){
    t <- data.frame(words = stri_extract(df$data, coll=x))
    t<- setDT(t)[, .( Count = .N), by = words]
    t<-t[complete.cases(t$words)]
    result<-rbind(result,t)
    write.csv(result, "new.csv", row.names = F)
})

在此示例中,我希望CSV文件具有以下结果:

words Count
abc     1
aaa     1

但是,使用我的代码,我得到了:

words Count
aaa     1

我知道stri_extract应该在其中识别abcabc hello所以当我使用时可能会发生错误rbind

4

1 回答 1

3

您需要将write.csv文件移出循环,否则它将覆盖先前保存的文件,并且您只会在最后阶段保存文件。通过这样做,您将不得不在rbind外部获得结果lapply,因为您无法修改result函数中的变量。

result <- do.call(rbind, lapply(list$list, function(x){
                                t <- data.frame(words = stri_extract(df$data, coll=x))
                                t<- setDT(t)[, .( Count = .N), by = words]
                                t<-t[complete.cases(t$words)]
                                t
 }))

write.csv(result, "new.csv", row.names = F)
于 2016-05-31T16:28:13.683 回答