为了简化事情,让我们首先重新定义数据框stringsAsFactors=FALSE
:
df <- read.table(header = TRUE, text = "A B
NA TEST
TEST TEST
Abaxasdas Test", stringsAsFactors=FALSE)
您可以比较中的列NA
-安全使用方式identical
:
mapply(identical, df$A, df$B)
要获得输出“YES”和“NO”而不是TRUE
and FALSE
:
ifelse(mapply(identical, df$A, df$B), "YES", "NO")
Output
> df$Output <- ifelse(mapply(identical, df$A, df$B), "YES", "NO")
> df
A B Output
1 <NA> TEST NO
2 TEST TEST YES
3 Abaxasdas Test NO
替代
正如 joran 在评论中建议的那样,用值替换 NA 将使比较更容易。如果您不想更改数据框中的值(但也许您应该!),您可以使用如下辅助函数:
rna <- function(x) replace(x, is.na(x), "")
ifelse(rna(df$A)==rna(df$B), "YES", "NO")