[![在此处输入图片描述][1]][1]以下代码编译了商家评论的数据框,旨在从每一行中提取商家名称。我注意到前 14 行中的正则表达式没有匹配项,那里没有问题。一旦我将第一行包含匹配项(在本例中为 15),我就会收到以下错误。
Error in substring(x[ind], so, eo) : invalid substring arguments
似乎问题在于 regexpr 将结果发送到 index.list,而 regmatches 无法使用 index.list 作为正确的参数。
请注意,当我只运行没有 mapply 的第 15 行时,我得到了正确的结果。如果有更有效的方法可以将 regmatches 的结果放入一个新列而不是 mapply,请告诉我。我不能使用 stringr 或其他软件包(学校作业)。
require("tm")
reviews <- VCorpus(DirSource("C:/...../reviews"))
all.reviews <- data.frame(text=unlist(sapply(reviews,'[',"content")),stringsAsFactors=F)
data <- all.reviews[10:15,]
index.list <- mapply(regexpr, "(?<=Review of )(\\w+ )+(?=-\\s* [A-Z])", data, perl=T))
rest.names <- mapply(regmatches, data, index.list)
我无法附加图像,因此这里是 all.reviews data.frame 第 15 行的示例(暗淡 90 X 1):
通过 S. 在 Yelp 上对 Good To Go -Bronx (4/5) 的评论。Good To Go 22 条评论 评分详情 类别: 餐厅 美式(传统)餐厅 美式(传统)意大利语 [编辑] 1894 Eastchester Rd Bronx;NY 10461 (718) 829-2222 http://www.good2gorestaurant.com浏览菜单 添加照片 营业时间:周一至周四;周日上午 10 点至晚上 10 点周五至周六上午 10 点至晚上 11 点适合儿童:是接受信用卡:是 车库; 街道;私人地段服装:休闲适合团体:是价格范围:$ 需要预订:是
该函数的预期输出是一个包含 90 个元素的向量,其中每个元素都是餐厅名称(如果没有从字符串中提取任何内容,则为空白,因为我将使用其他正则表达式语句解决其他评论格式)。我们希望在第 15 个指数中看到“Good to Go”。