使用for循环到子集

时间:2018-10-09 20:42:58

标签: r dataframe subset

我有一个从主成分分析输出的数据框。值是每个主要成分的载荷。 它相当大(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循环是否是实现我要执行的操作的最佳选择?

0 个答案:

没有答案