假设我有一个带行的ds:
cat
dog
lion
miau
wuff
roarr
我想按顺序排序
cat
miau
dog
wuff
lion
roarr
为了做到这一点,我需要用序列
来订购它1 4 2 5 3 6
让我们用任意的n:
作为一个更一般的例子n <- 10
ds < data.frame(col=c(paste0(letters[1:n],1),paste0(letters[1:n],2)),stringsAsFactors = F)
ds[,] <- ds[mySeq,]
> ds
col
1 a1
2 b1
3 c1
4 d1
5 e1
6 f1
7 g1
8 h1
9 i1
10 j1
11 a2
12 b2
13 c2
14 d2
15 e2
16 f2
17 g2
18 h2
19 i2
20 j2
>
编辑: 我可以设想压缩序列1 :( nrow(ds)/ 2)和(nrow(ds)/ 2 + 1):nrow(ds)。 因此,如果n越高,我需要输入很多seqs。不太实际。
gtools mixedsort()不会与“随机”行一起使用:
set.seed(1337)
MHmakeRandomString <- function(n=1, lenght=12)
{
randomString <- c(1:n) # initialize vector
for (i in 1:n)
{
randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
lenght, replace=TRUE),
collapse="")
}
return(randomString)
}
ds <- data.frame(col=c(paste0(MHmakeRandomString(n),1),paste0(MHmakeRandomString(n),2)),stringsAsFactors = F)
dso <- mixedsort(ds)
我更新了我的第一个迷你示例!
答案 0 :(得分:1)
这是另一种方法,试图根据它的基础模式生成数字序列。这意味着没有字符串操作。
sequence_generator <- function(n, nrow){
base_seq=rep(1:n,each=nrow/n)
res=base_seq+seq(0,(nrow/n)-1)*n
res
}
sequence_generator(3,6)
# [1] 1 4 2 5 3 6
sequence_generator(10,20)
#[1] 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20
答案 1 :(得分:0)
我们可以使用sub
ds[order(sub("\\D+", "", ds[,1])), , drop = FALSE]
答案 2 :(得分:0)
怎么样:
func HitApi(callback: (NSDictionary) -> Void){
let dataToSend:String = "1=First&2=Second"
let jsonData:NSData?
// create post request
let url = NSURL(string: "http://myserver.com")!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Accept")
request.HTTPBody = dataToSend.dataUsingEncoding(NSUTF8StringEncoding)
var dict = ["output":""]
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data,response,error in
if error != nil{
dict["output"] = "An error"
callback(dict)
}
do {
let data = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? NSDictionary
dict["output"] = NSString(data: data!, encoding: NSUTF8StringEncoding)
callback(dict)
}catch{
dict["output"] = "error"
callback(dict)
}
}
task.resume()
}