Мне не совсем понятно, что вы пытаетесь сделать, поэтому есть два варианта.
Вариант 1: если вы хотите переместить NA
s в конец строки , только если они встречаются в столбце 1 . Строка, начинающаяся с не-NA
, останется неизменной, даже если в других позициях NA
s.
Мы можем сделать следующее:
# Function to circular shift entries to the left
lshift <- function(x) {
c(tail(x, -1), head(x, 1))
}
as.data.frame(t(apply(df, 1, function(x) {
while (x[1] == "<NA>") x <- lshift(x); x;
})))
# V1 V2 V3 V4 V5 V6
#1 PATH PATH PATH PATH <NA> <NA>
#2 PATH PATH VUS <NA> <NA> <NA>
#3 VUS VUS VUS <NA> <NA> <NA>
#4 PATH PATH VUS <NA> <NA> VUS
#5 PATH PATH <NA> <NA> <NA> <NA>
#6 PATH VUS VUS <NA> VUS <NA>
#7 MPATH VUS VUS PATH <NA> <NA>
#8 PATH VUS VUS <NA> <NA> <NA>
#9 VUS VUS VUS <NA> <NA> <NA>
#10 PATH <NA> VUS <NA> <NA> <NA>
#11 VUS <NA> <NA> VUS <NA> <NA>
#12 VUS VUS <NA> VUS <NA> <NA>
#13 PATH PATH <NA> PATH <NA> <NA>
#14 PATH PATH <NA> PATH <NA> <NA>
#15 VUS VUS <NA> VUS <NA> VUS
#16 VUS VUS <NA> VUS <NA> VUS
#17 PATH <NA> <NA> PATH <NA> <NA>
#18 PATH <NA> <NA> PATH <NA> <NA>
#19 PATH PATH <NA> PATH <NA> <NA>
#20 PATH PATH <NA> PATH <NA> <NA>
Вариант 2: Если вы хотите переместить все NA
s в конец каждой строки.
as.data.frame(t(apply(df, 1, function(x) c(x[x != "<NA>"], x[x == "<NA>"]))))
# V1 V2 V3 V4 V5 V6
#1 PATH PATH PATH PATH <NA> <NA>
#2 PATH PATH VUS <NA> <NA> <NA>
#3 VUS VUS VUS <NA> <NA> <NA>
#4 PATH PATH VUS VUS <NA> <NA>
#5 PATH PATH <NA> <NA> <NA> <NA>
#6 PATH VUS VUS VUS <NA> <NA>
#7 MPATH VUS VUS PATH <NA> <NA>
#8 PATH VUS VUS <NA> <NA> <NA>
#9 VUS VUS VUS <NA> <NA> <NA>
#10 PATH VUS <NA> <NA> <NA> <NA>
#11 VUS VUS <NA> <NA> <NA> <NA>
#12 VUS VUS VUS <NA> <NA> <NA>
#13 PATH PATH PATH <NA> <NA> <NA>
#14 PATH PATH PATH <NA> <NA> <NA>
#15 VUS VUS VUS VUS <NA> <NA>
#16 VUS VUS VUS VUS <NA> <NA>
#17 PATH PATH <NA> <NA> <NA> <NA>
#18 PATH PATH <NA> <NA> <NA> <NA>
#19 PATH PATH PATH <NA> <NA> <NA>
#20 PATH PATH PATH <NA> <NA> <NA>
Пример данных
df <- read.table(text =
" class1 class2 class3 class4 class5 class6
1 <NA> PATH PATH PATH PATH <NA>
2 PATH PATH VUS <NA> <NA> <NA>
3 VUS VUS VUS <NA> <NA> <NA>
4 PATH PATH VUS <NA> <NA> VUS
5 <NA> PATH PATH <NA> <NA> <NA>
6 PATH VUS VUS <NA> VUS <NA>
7 MPATH VUS VUS PATH <NA> <NA>
8 PATH VUS VUS <NA> <NA> <NA>
9 VUS VUS VUS <NA> <NA> <NA>
10 PATH <NA> VUS <NA> <NA> <NA>
11 VUS <NA> <NA> VUS <NA> <NA>
12 VUS VUS <NA> VUS <NA> <NA>
13 PATH PATH <NA> PATH <NA> <NA>
14 PATH PATH <NA> PATH <NA> <NA>
15 VUS VUS <NA> VUS <NA> VUS
16 VUS VUS <NA> VUS <NA> VUS
17 PATH <NA> <NA> PATH <NA> <NA>
18 PATH <NA> <NA> PATH <NA> <NA>
19 PATH PATH <NA> PATH <NA> <NA>
20 PATH PATH <NA> PATH <NA> <NA>",
header = T, row.names = 1, stringsAsFactors = F)