我想用一个特定的字符串来分割数据帧中的一些数据,并计算频率。
在尝试了几种方法之后,我想出了一个方法,但是我的结果有一个小错误。
示例:
数据帧数据文件:
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应该在abc hello中识别abc,所以当我使用rbind时可能会发生错误
发布于 2016-05-31 16:28:13
您需要将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)https://stackoverflow.com/questions/37549905
复制相似问题