我有这样的矢量
seq_vector <- c(3,12,5,9,11,8,4,6,7,11,15,3,9,10,12,2)
Run Code Online (Sandbox Code Playgroud)
我想按奇数的降序格式化它们,然后按偶数的升序排列.以上seq_vector的输出将是
new_seq_vector <- c(15,11,11,9,9,7,5,3,3,2,4,6,8,10,12,12)
Run Code Online (Sandbox Code Playgroud)
你能帮我解释一下它的逻辑吗?
试试x[order(x*v)]这里v是-1奇,一为偶数.
感谢@lmo:
x[order( x*(-1)^x )]
# [1] 15 11 11 9 9 7 5 3 3 2 4 6 8 10 12 12
Run Code Online (Sandbox Code Playgroud)
所以v = (-1)^x这里.
其他一些构建方式v:@ db's (-1)^(x %% 2); 和我的,1-2*(x %% 2).
(谢谢@db)如果x包含负整数,则需要一个额外的排序向量:
# new example
x = c(2, 5, -15, -10, 1, -3, 12)
x[order(v <- (-1)^x, x*v)]
# [1] 5 1 -3 -15 -10 2 12
Run Code Online (Sandbox Code Playgroud)