我有一个这样的数据框:
DF <- data.frame(phrase = c("text 1","this text 2", "text 3"))
我想创建一个列,其中包含数据帧中每一行中存在的短语数。前面的例子分别是2,3,2
我试过的是这个
library(data.table)
dfN<- setDT(DF)[, c('phrase') :=tstrsplit(phrase, '(?<=[^0-9])', perl=TRUE, type.convert=TRUE)]
但我收到此错误
[.data.table(setDT(DF),,,:= =(c(“phrase”))出错, tstrsplit(短语,: 内部逻辑错误。前期检查(在开始修改DT之前)没有捕获分配给因子的RHS('list')类型 列'短语'。请向datatable-help报告。 另外:警告信息: 在[.data.table(setDT(DF),,::=(c(“phrase”),tstrsplit(短语,: 提供了11个项目,分配给3个“短语”栏目(8个未使用)
答案 0 :(得分:1)
我们可以使用str_count
library(stringr)
setDT(DF)[, newcol := str_count(phrase, "\\w+")]