Вы можете использовать базу lapply
/ sapply
для достижения вашей производительности
lapply(d[23:ncol(d)], function(x) x[x != ""])
Это даст вам список векторов, в которых значение в столбце не пустое (""
).
Используя воспроизводимый пример
d <- data.frame(a = 1:5, b = c(1, 2, 3, "", 4), c = c("", 1, "", 3, ""),
stringsAsFactors = FALSE)
lapply(d[2:ncol(d)], function(x) x[x != ""])
#$b
#[1] "1" "2" "3" "4"
#$c
#[1] "1" "3"