我想对像
这样的矢量进行排序M = C(1, “< 4”,5,7, “< 12”,15,18, “< 21”, “< 25”,27) N = C(2, “< 4”,8,17,20,25,34, “&γ-35”,40,43)
仅按数字排序
输出如(1,2,“< 4”,“< 4”,5,7,8,...,< 35,40,43)
我在gtools库中尝试过mixedsort,但它不起作用。
并且,是否有任何函数可以标记每个元素来自哪个向量?
例如,0表示矢量m的数字,1表示矢量n
并得到类似(0,1,0,1,0,0,1,...,1,1,1)
的输出感谢
答案 0 :(得分:0)
我们将“m”和“n”的names
设置为“0”和“1”,将其连接到单个vector
,并通过提取数字部分将order
连接起来在新的向量中(使用gsub
)转换为numeric
,order
并使用该索引对'n1'进行排序。
n1 <- c(setNames(m, rep(0, length(m))),setNames(n, rep(1, length(n))))
r1 <- n1[order(as.numeric(gsub("\\D+", "", n1)))]
as.vector(r1)
#[1] "1" "2" "<4" "<4" "5" "7" "8" "<12" "15" "17" "18" "20"
#[13] "<21" "<25" "25" "27" "34" "<35" "40" "43"
as.integer(names(r1))
#[1] 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1