R 字符串匹配记录以统计数据帧中的所有实例

R 字符串匹配记录以统计数据帧中的所有实例,r,reshape2,stringr,agrep,R,Reshape2,Stringr,Agrep,我试图从数据帧中的行中提取符合特定条件的所有字符串,例如,每行中有多少个单词与“corn”匹配。这是输入 install.packages('stringr') library(stringr) dataset <- c("corn", "cornmeal", "corn on the cob", "meal") y<- c('corn',"corn","mean","meal") id<- c(1,2,3,4) dataset <- data.frame(id,data

我试图从数据帧中的行中提取符合特定条件的所有字符串,例如,每行中有多少个单词与“corn”匹配。这是输入

install.packages('stringr')
library(stringr)
dataset <- c("corn", "cornmeal", "corn on the cob", "meal")
y<- c('corn',"corn","mean","meal")
id<- c(1,2,3,4)
dataset <- data.frame(id,dataset,y)

id         dataset    y
1  1            corn corn
2  2        cornmeal corn
3  3 corn on the cob mean
4  4            meal meal

使用
行和
的选项。我们创建一个要比较的名称向量,然后基于该名称创建列

v1 <- c('corn', 'meal')     
dataset[v1] <- sapply(v1, function(x)  rowSums(dataset[-1]==x))

v1这是一个简单的
rowSums
操作。您希望在
数据集中的每个单词都有一列
y
?我只希望每个单词都有一列,如上所示。但是我有一大组变量,比如V1:V100,我需要创建一些列,比如corn,mean,etcI得到了这个错误。行和中的错误(数据集,na.rm=FALSE,dims=1):“x”必须是numericAs@DavidArenburg注释的,这可以通过
行和来完成,即
数据集[c('corn','mean')]
v1 <- c('corn', 'meal')     
dataset[v1] <- sapply(v1, function(x)  rowSums(dataset[-1]==x))