исчезающие имена строк при использовании apply - PullRequest
2 голосов
/ 06 ноября 2010

Рассмотрим следующий пример (значения в векторах являются результатами целевой практики, и я пытаюсь автоматически отсортировать результаты по счетам).Мы генерируем три вектора.Мы сортируем значения в столбцах 1:20 в порядке возрастания, а строки в порядке убывания на основе столбца out.tot.

# Generate data
shooter1 <- round(runif(n = 20, min = 1, max = 10))
shooter2 <- round(runif(n = 20, min = 1, max = 10))
shooter3 <- round(runif(n = 20, min = 1, max = 10))
out <- data.frame(t(data.frame(shooter1, shooter2, shooter3)))
colnames(out) <- 1:ncol(out)

out.sort <- t(apply(out, 1, sort, na.last = FALSE))
out.tot <- apply(out , 1, sum)
colnames(out.sort) <- 1:ncol(out.sort)
out2 <- cbind(out.sort, out.tot)

out3 <- apply(out2, 2, sort, decreasing = TRUE, na.last = FALSE)

out2 имеет присоединенные имена строк, в то время как out3 их теряет.Единственное отличие состоит в том, что я использовал MARGIN = 2, что, вероятно, является причиной (потому что она принимает столбец за столбцом).Я могу сопоставлять строки вручную, но есть ли способ предотвратить исчезновение имен строк в out3?

> out2
         1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 out.tot
shooter1 1 2 2 3 3 3 4 5 5  5  6  6  6  6  6  7  8  9  9 10     106
shooter2 1 3 3 3 3 4 4 4 5  5  5  5  5  6  7  8  8  9  9 10     107
shooter3 1 1 2 2 2 3 3 4 5  5  5  6  6  6  6  7  8  8  8  9      97

> out3
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 out.tot
[1,] 1 3 3 3 3 4 4 5 5  5  6  6  6  6  7  8  8  9  9 10     107
[2,] 1 2 2 3 3 3 4 4 5  5  5  6  6  6  6  7  8  9  9 10     106
[3,] 1 1 2 2 2 3 3 4 5  5  5  5  5  6  6  7  8  8  8  9      97

1 Ответ

0 голосов
/ 06 ноября 2010

Если я понимаю ваш пример, переходя от out2 к out3, вы сортируете каждый столбец независимо - это означает, что значения в строке 1 могут не все поступать из данных, сгенерированных из shooter1.Тогда имеет смысл, что имена строк сбрасываются настолько, насколько имена строк являются именами наблюдений, и вы больше не храните данные одного наблюдения в одной строке.

...