R:模式匹配上2个向量的逻辑

R:模式匹配上2个向量的逻辑,r,pattern-matching,R,Pattern Matching,为了清理一些脏数据(用于工作),我的数据框中有一列客户信息(例如我们的示例中的store和product),其中包含一个很长的奇怪字符串,以及一列store和一列product。我可以从字符串中解析商店和产品。这就是我解决问题的地方 比如说(考虑这些向量是更大数据帧的一部分,附加了数据$,如果有帮助的话,我只是将它们作为向量使用,认为这样可以加快代码的速度,而不必拉动整个数据帧): WeirdString请检查这是否适合您: check <- function(vec_a, vec_b){

为了清理一些脏数据(用于工作),我的数据框中有一列客户信息(例如我们的示例中的store和product),其中包含一个很长的奇怪字符串,以及一列store和一列product。我可以从字符串中解析商店和产品。这就是我解决问题的地方

比如说(考虑这些向量是更大数据帧的一部分,附加了数据$,如果有帮助的话,我只是将它们作为向量使用,认为这样可以加快代码的速度,而不必拉动整个数据帧):


WeirdString请检查这是否适合您:

check <- function(vec_a, vec_b){
   mat <- cbind(vec_a, vec_b)
   diff <- apply(mat, 1, function(x) !grepl(pattern = x[1], x = x[2], ignore.case = TRUE))
diff
}

检查它是否正常工作!这太完美了!你是救世主。花了几个小时的时间现在不到2分钟。
WS_Store <- c("Amazon Inc.", "BestBuy", "WALMART")
WS_Prod <- c("Echo", "Ps-4", "Pants")
DB_Store <- c("Amazon", "BEST BUY", "Other")
DB_Prod <- c("ECHO", "PS4", "Jeans")
for(i in 1:nrow(data)){     # could be i in length(DB_prod) or whatever, all vectors are the same length)
  Diff_Store[i] <- !grepl(DB_Store[i], WS_Store[i], ignore.case=T)
  Diff_Prod[i]  <- !grepl(DB_Prod[i] , WS_Prod[i] , ignore.case=T)
}
check <- function(vec_a, vec_b){
   mat <- cbind(vec_a, vec_b)
   diff <- apply(mat, 1, function(x) !grepl(pattern = x[1], x = x[2], ignore.case = TRUE))
diff
}