我需要从仅指定名字或姓氏的大型数据框中提取行,但我需要在三个不同的数据框中检查这一点。 我相信我犯了一个奇怪的错误,但我花了几个小时却无法解决它。
我使用了这段代码,但出现错误。
可复制的模型。
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
试试这个(不需要
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"