如何检查是否要在if语句中使用的数据框中的某列中有某些字符?

时间:2019-03-21 23:11:40

标签: r

我有一个数据框,并且我想将该数据框的特定列的任何行中存在某个值用作逻辑条件。

此列中的每个值都是一个字符。以下是本专栏中的一些数据示例:

示例行1:

  

ID = AB3,totalServicePrice = 25.0,isLeased = true,错误= Error   [errorId = [CSSM-SOR-306],errorMessage =未知错误。]

第2行示例:

  

ID = AB4,totalServicePrice = 25.0,isLeased = true,错误= null

如果该列在任何行中包含error = Error,则我希望执行if子句的to子句,如果没有,则希望我的else子句的执行。我尝试了以下操作:

if('error=Error' %in% equipmentSubstring3$object.object)

if(equipmentSubstring3$object.object %like% 'error=Error')

if(grepl('error=Error', equipmentSubstring3$object.object)

if(grepl('error=Error', equipmentSubstring3$object.object, fixed=TRUE)

第一个if子句的计算结果为false。第2至第4个也都计算为false,因为我在if子句中放入的每个条件针对该列中的每一行返回一个true和false列表,而if语句仅计算该列表中的第一个元素。

如果我的列包含要查找的值,如何使if子句的值为true?

1 个答案:

答案 0 :(得分:0)

让我看看我是否理解,如果列错误的至少一行中有错误“ Error”,那么您想运行一个子句(条件评估为true)。这就是我的解决方案:

    library(stringr) # Useful for string manipulation
    findingError <- str_detect(pattern = "Error", dataframe$errorcolumn) # This function detects the presence of a pattern within a string

    if(any(findingError)) { #The Any function evaluates to true when at least one of the components of a logical vector is TRUE
    # Do something
    }