Выбор имен строк во фрейме данных с использованием цикла for для подмножества - PullRequest
0 голосов
/ 09 октября 2018

У меня есть кадр данных, выведенный из анализа главных компонентов.Значения являются загрузками каждого основного компонента.Она довольно большая (146 x 146, но здесь я копирую только 5 x 5 выборок)

>loads.df[1:5,1:5]
               PC1         PC2         PC3         PC4         PC5
Lip_1  0.217572293 -0.05501790  0.09627901 -0.04127339  0.06228162
Lip_2 -0.002299654  0.06167777  0.08853237 -0.10357565 -0.18432139
Lip_3  0.213276149 -0.05596983  0.12046149 -0.01380695  0.04328364
Lip_4  0.232908337 -0.07124672  0.10277296 -0.02581120  0.03838504
Lip_5  0.101494133 -0.05313731 -0.00510382  0.07335147 -0.05647190

Мне интересно найти максимальное абсолютное значение для первых 22 компонентов и извлечь имена строк длякаждый из них.Чтобы было понятнее, используя следующий код, я могу извлечь имя строки максимального абсолютного значения для столбца PC1:

> rownames(loads.df[loads.df$PC1 == abs(max(loads.df$PC1)), ])
[1] "Lip_10"

Поскольку меня интересуют только первые 22 компонента, я мог повторить команду 22 разаи измените имя столбца, но я пытался найти решение, используя цикл for.

Это то, что я пытался, но на самом деле не получилось то, что я надеюсь:

pc <- paste("PC",1:22, sep="")
for(i in pc){
  print(rownames(loads.df[loads.df$i == abs(max(loads.df$i)), ]))
}
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)
There were 22 warnings (use warnings() to see them)

Я не совсем уверен, почему цикл for не работает.Любой совет приветствуется.Кроме того, является ли цикл for лучшим вариантом для достижения того, что я пытаюсь сделать?

...