Это требует немного дополнительного изящества из-за возможности того, что X1
и X2
будут NA
, но эту функцию можно использовать для решения вашей проблемы:
foo <- function(x) {
if(all(nas <- is.na(x))) {
NA
} else {
x[!nas]
}
}
Мыиспользуйте функцию foo
, применяя ее к каждой строке ваших данных (здесь у меня есть ваши данные в объекте с именем dat
):
> apply(dat, 1, foo)
[1] 1 2 NA
Так что это дает нам то, что мы хотим.Чтобы включить это в ваш объект, мы делаем это:
> dat <- within(dat, X3 <- apply(dat, 1, foo))
> dat
X1 X2 X3
1 1 NA 1
2 NA 2 2
3 NA NA NA