我去了论坛,但我找不到我需要的东西而且我无法做到。 我有这个示例数据
A<-c(1,4,2,6,9,-5,-2,-5)
B<-c(-4,-1,4,10,3.5,2.9,-1.4,0.5)
AA<-data.frame(A,B,C,D)
C<-c(3,1.3,5.4,-4.3,5.5,2.5,-6.4,8.2)
D<-c(-2.4,-4.3,2.4,5.4,1.2,9.3,7.4,-4.1)
E<-c(0.4,2.4,5.6,2.8,4.5,2.9,3.3,8.1)
BB<-data.frame(C,D,E,G)
colnames(BB)<-c("A","B","C","D")
G<-c(1.4,2.5,-3.2,-6.3,8.2,-7.4,-0.3,1.1)
CC<-data.frame(E,G,A,B)
colnames(CC)<-c("A","B","C","D")
L<-list(AA,BB,CC)
L
我想通过其中一个变量来订购它,我做了这个
ordered<-lapply(L,function(x) x[order(x$B,decreasing=TRUE),])
ordered
但问题是这个解决方案是分别订购每一帧。 我需要的是一个新的框架,其中是整个列表中的有序数据。 它表示列中的有序值(在本例中为B)以及有关此变量的位置(列表中的列表和行)的行的信息。 它会像这样
A B C D
[[1]] [[4]] 6 10 -4.3 5.4
[[2]] [[6]] 2.5 9.3 2.9 -7.4
在这种情况下
等等, 注意:我在原始数据中有一些NA,所以我希望NA会保持不变。 有任何建议或方法吗? 感谢
答案 0 :(得分:0)
我做的事情如下:
dat <- suppressWarnings(data.frame(sapply(names(L[[1]]) , function(x) unlist(L)[grep(x, names(unlist(L)))])))
dat$Location <- paste(paste0("[[", rep(seq_len(length(L)), each = unique(sapply(L, nrow))), "]]"), paste0("[[", rep(seq_len(unique(sapply(L, nrow))), length(L)), "]]"))
dat <- dat[order(-dat$B), ]
哪个给出了
A B C D Location
4 6.0 10.0 -4.3 5.4 [[1]] [[4]]
14 2.5 9.3 2.9 -7.4 [[2]] [[6]]
21 4.5 8.2 9.0 3.5 [[3]] [[5]]
15 -6.4 7.4 3.3 -0.3 [[2]] [[7]]
12 -4.3 5.4 2.8 -6.3 [[2]] [[4]]
3 2.0 4.0 5.4 2.4 [[1]] [[3]]
5 9.0 3.5 5.5 1.2 [[1]] [[5]]
6 -5.0 2.9 2.5 9.3 [[1]] [[6]]
18 2.4 2.5 4.0 -1.0 [[3]] [[2]]
11 5.4 2.4 5.6 -3.2 [[2]] [[3]]
17 0.4 1.4 1.0 -4.0 [[3]] [[1]]
13 5.5 1.2 4.5 8.2 [[2]] [[5]]
24 8.1 1.1 -5.0 0.5 [[3]] [[8]]
8 -5.0 0.5 8.2 -4.1 [[1]] [[8]]
23 3.3 -0.3 -2.0 -1.4 [[3]] [[7]]
2 4.0 -1.0 1.3 -4.3 [[1]] [[2]]
7 -2.0 -1.4 -6.4 7.4 [[1]] [[7]]
9 3.0 -2.4 0.4 1.4 [[2]] [[1]]
19 5.6 -3.2 2.0 4.0 [[3]] [[3]]
1 1.0 -4.0 3.0 -2.4 [[1]] [[1]]
16 8.2 -4.1 8.1 1.1 [[2]] [[8]]
10 1.3 -4.3 2.4 2.5 [[2]] [[2]]
20 2.8 -6.3 6.0 10.0 [[3]] [[4]]
22 2.9 -7.4 -5.0 2.9 [[3]] [[6]]