我知道我可以订购data.frame:
test = data.frame(A=c(4,2,4), B=c(8,3,2))
ordered = test[with( test, order(A,B)) , ]
Run Code Online (Sandbox Code Playgroud)
但是当列名作为字符变量指定列时,如何完成相同的操作?这似乎不起作用:
test = data.frame(A=c(4,2,4), B=c(8,3,2))
cols = c( "A" , "B" )
ordered = test[ with( test, order(cols )) , ]
Run Code Online (Sandbox Code Playgroud)
有没有办法将"B"转换为B,以便识别该列?我似乎经常使用带有列名输入的函数来解决这个问题.是否有一些术语来描述R中的这个问题空间(字符标识符与非字符标识符)?
42-*_*42- 12
尝试改为:
ordered = test[ with( test, order(B)) , ]
Run Code Online (Sandbox Code Playgroud)
要么:
ordered2 = test[ order( test[["B"]] ) , ]
Run Code Online (Sandbox Code Playgroud)
第二种形式允许您执行以下操作:
colnm <- "B"
ordered2 = test[ order(test[[colnm]]) , ]
Run Code Online (Sandbox Code Playgroud)
要订购多个列,您需要使用do.call(帮助页面中的示例):
d4 <- data.frame(x = round( rnorm(100)), y = round(10*runif(100)),
z = round( 8*rnorm(100)), u = round(50*runif(100)))
d4s <- d4[ do.call(order, d4[ , c("x", "y") ] ), ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5479 次 |
| 最近记录: |