每行的列名前3个数据帧R.

时间:2016-03-14 18:55:10

标签: r dataframe

我们假设我们在R中有以下数据框:

DF <- as.data.frame.matrix(matrix(sample(1:15,15),ncol=5,nrow=3))

   V1  V2 V3 V4 V5
1  15   8  3 14  4
2  11   2  5 13  6
3   9   7 10 12  1

我正在尝试检索每行前三个值的列名。我想获得一个包含以下信息的新数据框:

1 V1 V4 V2
2 V4 V1 V5
3 V4 V3 V1

我尝试使用apply和dapply但它不起作用。我设计了一个在apply中使用的函数,但它没有按预期工作。你能不能给我任何暗示来解决这个问题。我认为this应该有所帮助。

1 个答案:

答案 0 :(得分:2)

我们可以循环遍历行(applyMARGIN=1),使用order逐渐获取行中元素的数字索引,使用它来排序列名,获取使用head的前3个元素,转置输出并转换为data.frame

 as.data.frame(t(apply(DF, 1, function(x) 
   head(names(DF)[order(-x)],3))), stringsAsFactors=FALSE)
#  V1 V2 V3
#1 V1 V4 V2
#2 V4 V1 V5
#3 V4 V3 V1