使用R

时间:2019-07-08 13:34:02

标签: r

我想使用带有类别所有产品类别的字典对购物篮中的产品进行分类。我想特别检查一下购物篮中的产品是否是词典中的一个元素,如果是真的,我想用类别名称(词典)替换该产品。

我将字典导入到csv的列表中,并尝试将购物篮中的产品与%in%进行比较,但这没有用。

BD19jfiles [[i]] $ product $ name返回购物篮的产品。 Pistolets是带有chars(字典)的列表。

l <- length(BD19jfiles)
for(i in 1:l) {
if(BD19jfiles[[i]]$product$name %in% Pistolets){
grepl('Pistolet', BD19jfiles[[i]]$product$name)
}
}

我想用单词“ Pistolet”替换对“ BD19jfiles [[i]] $ product $ name%in%Pistolets”返回true的产品

2 个答案:

答案 0 :(得分:2)

我们可以使用lapply遍历list,并通过使用grepl检查该元素中的'PISTOLET'子字符串来更新'name'元素,并将其分配给“ Pistolet “

lapply(BD19jfiles, function(x) {
   x$product$name[grepl("PISTOLET", x$product$name)] <- "Pistolet"
    x
    }) 

如果词典标识符是Pistolets

lapply(BD19jfiles, function(x) {
     x$product$name[x$product$name %in% Pistolets] <- "Pistolet"
     x
     })

如果它是子字符串,请使用grepl

nm1 <- paste0("\\b(", paste(unlist(Pistolets), collapse="|"), ")\\b")
out <- lapply(BD19jfiles, function(x) {

       x$product$name[grepl(nm1, x$product$name)] <- "Pistolet" 
       x
        })  

答案 1 :(得分:1)

lapply(BD19jfiles, function(x){
   x$product$name=gsub(paste(Pistolets,collapse="|"),"Pistolets",x$product$name)
   x
}

在这里,您要将与词典中任何单词匹配的单词更改为Pistolet