2017-05-25 120 views
1
mdma4 <- unique(mdma4)  
output <- c() 
for (i in 1:length(mdma4)){ 
    m <- (mdma4[i]) 
    result <- mdma$MRP.Area[grepl('m', mdma$Material)] 
    if (length(result) == 0){ 
    print('in if') 
    output <- c(output, result) 
    } 
} 

mdma4包含向量:c("A", "B", ...)mdma是具有2列的数据帧。Grepl in for循环,通过字符串

我想从mdma4传递一个字符串到mdma$Material,并从mdma$MRP找到对应的条目。区域 但grepl代码不从相应的列中获取数据。

它是循环外的部分字符串匹配,下面的代码工作,但如果它在for循环,不工作。

test <- mdma$MRP.Area[grepl("GK180", mdma$Material)] 
+0

如果提供更多信息或要求澄清,请使用评论或更新问题。复制答案并将其作为答案张贴无效。 – manotheshark

回答

0

目前还不清楚您是在寻找完整的字符串还是部分字符串匹配。下列情况之一的应工作:

mdma$MRP.Area[grepl(m, mdma$Material)] #remove quotes around m 

mdma$MRP.Area[grepl(mdma4[i], mdma$Material)] #not creating variable m 

mdma$MRP.Area[mdma$Material == mdma4[i]] #full string match 

仅供参考,关闭}缺少

0

以下所有没有工作,当它是内环路 但工作以外的for循环

mdma$MRP.Area[grepl(m, mdma$Material)] #remove quotes around m 

mdma$MRP.Area[grepl(mdma4[i], mdma$Material)] #not creating variable m 

mdma$MRP.Area[mdma$Material == mdma4[i]]