У меня есть кадр данных, выведенный из анализа главных компонентов.Значения являются загрузками каждого основного компонента.Она довольно большая (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 лучшим вариантом для достижения того, что я пытаюсь сделать?