Если вы беспокоитесь о скорости и эффективности, я бы порекомендовал data.table
(хотя технически векторизация нормального data.frame
в соответствии с рекомендациями @parfait, вероятно, ускорит процесс более чем достаточно)
library(data.table)
DT <- fread("a b c d e
F G G 1 10
F G F 5 10
F F F 2 8")
print(DT)
# a b c d e
# 1: F G G 1 10
# 2: F G F 5 10
# 3: F F F 2 8
DT[a == b, d := NA]
DT[!a == b & b == c, e := NA]
print(DT)
# a b c d e
# 1: F G G 1 NA
# 2: F G F 5 10
# 3: F F F NA 8