как получить вектор с именами столбцов после выполнения определенной сортировки в кадре данных - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующий код, и я хочу colnames отсортированной последовательности v

             r<-6
    c<-6
    a<-LETTERS[rep(1:3,each=2)]
    b<-paste0(a,1:2)
    set.seed(1)
    M<-matrix(rnorm(1:36),r,c)
    M<-t(M)
    colnames(M)<-t(b)
    dF<-data.frame(M)
    seq1<-seq(1,length(dF),2)
    f<-c()
    names<-c()
    for (i in seq1) {
      f[i]<-dF[1,i]
      v<-sort(f)
    }
print(dF)
          A1          A2         B1          B2          C1         C2
1 -0.6264538  0.18364332 -0.8356286  1.59528080  0.32950777 -0.8204684
2  0.4874291  0.73832471  0.5757814 -0.30538839  1.51178117  0.3898432
3 -0.6212406 -2.21469989  1.1249309 -0.04493361 -0.01619026  0.9438362
4  0.8212212  0.59390132  0.9189774  0.78213630  0.07456498 -1.9893517
5  0.6198257 -0.05612874 -0.1557955 -1.47075238 -0.47815006  0.4179416
6  1.3586796 -0.10278773  0.3876716 -0.05380504 -1.37705956 -0.4149946
print(v)
-0.8356286 -0.6264538  0.3295078

Когда v сортируется в зависимости от размера чисел, я хотел бы получить вектор с именами в списке v в том же порядке. Так что я хотел бы получить этот вектор в этом случае. с ( «В1», «А1», «С1») Это просто уменьшенный фрейм данных, и могут существовать дубликаты.

Что мне добавить в мой код? Спасибо заранее

1 Ответ

0 голосов
/ 03 сентября 2018

Ты имеешь в виду это?

apply(dF[seq(1, ncol(dF), by = 2)], 1, function(x)
    names(dF[seq(1, ncol(dF), by = 2)])[order(x)])[, 1]
#[1] "B1" "A1" "C1"

Или получить matrix имен столбцов для всех 6 строк.

t(apply(dF[seq(1, ncol(dF), by = 2)], 1, function(x)
    names(dF[seq(1, ncol(dF), by = 2)])[order(x)]))
#     [,1] [,2] [,3]
#[1,] "B1" "A1" "C1"
#[2,] "A1" "B1" "C1"
#[3,] "A1" "C1" "B1"
#[4,] "C1" "A1" "B1"
#[5,] "C1" "B1" "A1"
#[6,] "C1" "B1" "A1"

Объяснение: dF[seq(1, ncol(dF), by = 2)] выбирает столбцы 1, 3, 5, ... и apply(..., 1, function(x) names(dF[seq(1, ncol(dF), by = 2)])[order(x)]) возвращает имена столбцов упорядоченных записей по строкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...