2017-05-25 107 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]]