我在R中有一个列表,看起来像这样
[1] 1067 576 0 0 0 786 0
Run Code Online (Sandbox Code Playgroud)
我想要的是另一个列表,它以这样的方式排序,以便告诉元素的顺序从大到小,所以在这种情况下它会报告
1 6 2
Run Code Online (Sandbox Code Playgroud)
也就是说,第一个元素是最大的,然后是第6个元素,然后是第二个元素.
思考?
你似乎想要排除0.
v <- c(1067, 576, 0, 0, 0, 786, 0)
rev(order(v))[1:length(v[v>0])]
# [1] 1 6 2
Run Code Online (Sandbox Code Playgroud)
你也可以使用:
order(v, decreasing=TRUE)[1:length(v[v>0])]
Run Code Online (Sandbox Code Playgroud)
这相当于一件事.