如何创建一个 if else 条件来从三个不同的数据帧中选择向量中的特定名称?

问题描述 投票:0回答:1

我需要从仅指定名字或姓氏的大型数据框中提取行,但我需要在三个不同的数据框中检查这一点。 我相信我犯了一个奇怪的错误,但我花了几个小时却无法解决它。

我使用了这段代码,但出现错误。

  • 可复制的模型。

    df1 <- data.frame(NAME1=c("MARIA APARECIDA", "JOSÉ CARLOS", "PEDRO PAULO BRAZ", "MÁRCIO TEELES","HUGO HOSEMAN"),
                     col2=c("CONTROL", "EXPERIMENT", "EXPERIMENT", "CONTROL", "CONTROL"),
                     col3 = c("none", "none", "none", "none", "none"))
    
    df2 <- data.frame(NAME2=c("MARIA APARECIDA", "JOSÉ NONATO ", "PAULO BRAZ CUNHA", "ALAN SIMON","BRITNEY HALLEN"),
                      col2=c("CONTROL", "EXPERIMENT", "CONTROL", "CONTROL", "EXPERIMENT"),
                      col3 = c("none", "none", "none", "none", "none"))
    
    df3 <- data.frame(NAME3=c("MERLY MATOS", "OSVALDO SIQUEIRA ", "ITANYA MARIA LOPES", "ZILCA COSTA","DIVONE FERRAZ"),
                      col2=c("EXPERIMENT", "CONTROL", "EXPERIMENT", "CONTROL", "CONTROL"),
                      col3 = c("none", "none", "none", "none", "none"))  
    
        name<- "MARIA"
    
         if (filter(grepl(df1$NAME1== name))) {
      unique(grep(name, df1$NAME1, value = TRUE))
    
    
    } else if (grep(df2$NAME2== name)){
      unique(grep(name, df2$NAME2, value = TRUE))
    
    } else {
      unique(grep(name, df3$NAME3, value = TRUE))
    }
    
    
    
     Error in grepl(df1$NAME1 == name) : 
     argument "x" is missing, with no default
    
r if-statement conditional-statements character
1个回答
1
投票

试试这个(不需要

filter
)。

name <- "MARIA"
if (length(nm1 <- grep(name, df1$NAME1, value=TRUE))) {
  unique(nm1)
} else if (length(nm2 <- grep(name, df2$NAME2, value=TRUE))) {
  unique(nm2) 
} else {
  unique(grep(name, df3$NAME3, value=TRUE))
}
# [1] "MARIA APARECIDA"
© www.soinside.com 2019 - 2024. All rights reserved.