2017-10-19 36 views
3

排序的Vector我有一个这样的载体 -由升序

MyVector <- c("2:3", "11:6", "9:10") 

我要调用此为X:Y。我想按升序对x的值进行排序。

所以我排序的载体需要的样子,

"2:3", "9:10", "11:6" 

和排序后,我想输出Y的值在不同的载体

FinalVector看起来像:

"3", "10", "6" 
+0

如果您在向量中存储的数据是数字的事实,那么我强烈建议使用列表来存储所述向量,而不是将其存储在字符中。 –

+3

'gsub(“。*:”,“”,MyVector [order(as.numeric(gsub(“:。*”,“”,MyVector)))])' – PoGibas

回答

4
MyVector <- c("2:3", "11:6", "9:10") 
gsub(".*:", "", MyVector[order(as.numeric(gsub(":.*", "", MyVector)))]) 
[1] "3" "10" "6" 

说明:

  • gsub(":.*", "", MyVector) - :之前提取部分(例如,2119
  • 把它们变成数字,并得到他们的订单在原有的向量从原来的矢量
  • 提取值按指定顺序
  • gsub(".*:", "" ...) - 前:
+0

工作正常。非常感谢。 – Sid29

2

删除部分你也可以这样做:

a <- as.numeric(unlist(strsplit(MyVector, ":"))) 
a[c(FALSE, TRUE)][order(a[c(TRUE, FALSE)])] 

#[1] 3 10 6