我正在尝试使用arrange_()
函数对包含字符串的列进行降序排列。
library(dplyr) # R version 3.3.0 (2016-05-03) , dplyr_0.4.3
# data
set.seed(1)
df1 <- data.frame(grp = factor(c(1,2,1,2,1)),
x = round(runif(5,1,10), 2))
# grp x
# 1 1 3.39
# 2 2 4.35
# 3 1 6.16
# 4 2 9.17
# 5 1 2.82
以下是我需要实现的内容:
df1 %>% arrange(grp, -x)
df1 %>% arrange(grp, desc(x))
# grp x
# 1 1 6.16
# 2 1 3.39
# 3 1 2.82
# 4 2 9.17
# 5 2 4.35
在我的情况下,第二列是一个字符串:
#dynamic string
myCol <- "x"
#failed attempts
df1 %>% arrange_("grp", desc(myCol))
错误:尺寸不正确(1),期望值:5
df1 %>% arrange_("grp", "desc(myCol)")
错误:未找到 'myCol' 对象
df1 %>% arrange_(c("grp", "desc(myCol)"))
#wrong output
# grp x
# 1 1 3.39
# 2 1 6.16
# 3 1 2.82
# 4 2 4.35
# 5 2 9.17
我在这里找到了类似的解决方案,但无法使其正常工作:
df1 %>% arrange_(.dots = c("grp", "desc(myCol)"))
错误:未找到对象'myCol'
感觉好像我漏掉了一些很明显的东西,有什么想法吗?
interp
选项,但我认为使用paste
更简洁。 - akrunrlang
添加了一个选项。 - akrun