dplyr的arrange
不适用于!!
请参阅MWE,我试图在其中按“日期”变量对data.frame进行排序,但我不想使用date
来使用字符/字符串对其进行参数化
library(dplyr)
a = data.frame(date = 1:3, ok = 1:3)
a %>%
arrange(date)
date = "date"
a %>%
arrange(!!date) # doesn't work
meh = "date"
a %>%
arrange(!!meh) # doesn't work
我认为!!
可以在任何dplyr函数中用于执行变量的标准评估(SE)。理解不正确吗?我该如何纠正?
答案 0 :(得分:2)
我不知道为什么!!
不能与ranging一起使用,但是您仍然可以使用get
a %>% arrange(get(meh))
# date ok
#1 1 1
#2 2 2
#3 3 3
答案 1 :(得分:1)
一种方法(似乎有点round回,但仍然可行)是在应用取消引号运算符之前使用rlang::sym
:
library(dplyr)
a = data.frame(date = 3:1, ok = 1:3)
a %>%
arrange(date)
acol = "date"
a %>%
arrange(!!rlang::sym(acol))
这里也有详尽的指南:dplyr programming guide。
另请参阅this answer;基本上是同一件事。
通过Diceboy的有用评论编辑 TIL,有许多方法可以处理多个变量:
a %>% arrange(get(name1),get(name2))
a %>% arrange(.data[[name1,name2]])
a %>% arrange(!!!rlang::syms(c(name1,name2)))
尽管mget
不能很好地工作!
答案 2 :(得分:1)
使用3 2 1
变量:
TextAdapter
还有更多示例:
IParcelable gridViewState = gvContagem.OnSaveInstanceState(); // <-- save scroll position
gvContagem.Adapter = new TextAdapter(this, artigos);
gvContagem.OnRestoreInstanceState(gridViewState); // <-- Load scroll position