r data.table - 比较具有相同后缀的列

r data.table - compare columns with same suffix

我有一对具有相同后缀的变量,想比较并生成 Y 或 N 标志。我可以一个一个地输入条件,但只是想知道是否有更好的方法来使用 apply 函数。

我更喜欢使用 data.table 包的解决方案。

x <- data.table(x_abc="A1", y_abc="A1", x_pqr="A1", y_pqr="B1")
x[,':='(abc=ifelse(x_abc==y_abc,"Y","N"), pqr=ifelse(x_pqr==y_pqr,"Y","N"))]

您可以创建 2 个列名向量并使用 Map -

并行比较它们
library(data.table)

x_cols <- grep('^x', names(x), value = TRUE)
y_cols <- grep('^y', names(x), value = TRUE)
new_cols <- sub('x_', '', x_cols)

x[, (new_cols) := Map(function(a, b) ifelse(a == b, 'Y', 'N'), 
                  .SD[, ..x_cols], .SD[, ..y_cols])]

x

#   x_abc y_abc x_pqr y_pqr abc pqr
#1:    A1    A1    A1    B1   Y   N