我用mtcars数据集来说明我的问题。
例如,我想将数据子集到4-cyl汽车。我可以做到:
mtcars %>% filter(cyl == 4)
在我的工作中,我需要传递一个字符串变量作为我的列名。例如:
var <- 'cyl'
mtcars %>% filter(var == 4)
我也做了:
mtcars %>% filter(!!var == 4)
在这两种情况下,我都得到空数据帧。
现在建议使用。数据
代词:
library(dplyr)
mtcars %>% filter(.data[[var]] == 4)
# mpg cyl disp hp drat wt qsec vs am gear carb
#Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
#Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
#Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
#Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
#Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
#Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
#Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
#Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
#Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
我认为@snoram的答案很优雅,完全依赖于dplyr
。
var <- c('cyl')
mtcars %>% filter(get(var) == 4)
您也可以将其用于列表。对于一个简单的示例,可以将每个筛选列的计数作为新数据集。
#adding car name
mtcars <- rownames_to_column(mtcars, "car_name")
#name your vectors
vector <- c("vs","am","carb")
df2 <- data.frame()
for (variable in vector) {
df1 <- mtcars %>% filter(get(variable) == 1) %>% summarise(variable = n_distinct(car_name)) %>% data.frame()
df2<- rbind(df2,df1)
}
或
UQ
计算变量,因此mtcars%
mtcars %>% filter({ print(!!var); (!!var) == 4 })
# [1] "cyl"
# [1] mpg cyl disp hp drat wt qsec vs am gear carb
# <0 rows> (or 0-length row.names)
要将
var
计算为cyl
列,需要先将var
转换为cyl
的符号,然后将符号cyl
计算为列:
使用
rlang
:
library(rlang)
var <- 'cyl'
mtcars %>% filter((!!sym(var)) == 4)
# mpg cyl disp hp drat wt qsec vs am gear carb
#1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#3 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
# ...
或者使用
作为。symbol/as。来自baseR的名称
:
mtcars %>% filter((!!as.symbol(var)) == 4)
mtcars %>% filter((!!as.name(var)) == 4)
问题内容: 我有一个分配了字符串的变量,我想根据该字符串定义一个新变量。 问题答案: 你可以使用exec:
从java中字符串的值创建对现有对象的引用 在我的项目中,有很多按钮(目前大约70个);每个按钮都会在数据库的jlabel中提出一个问题。现在,根据用户的选择,每个按钮(swings的jButton)将被分配颜色,这取决于用户是否想查看问题,或者他是否标记了问题的答案。 一种方法是为每个jbutton的actionperformed编码,并在每个jbutton中使用if-else来获得确切的颜色,
问题内容: 此线程讨论如何在Python中以字符串形式获取函数名称:如何在Python中以字符串 形式获取函数名称? 如何对变量执行相同操作?与函数相反,Python变量没有属性。 换句话说,如果我有一个变量,例如: 我正在寻找一个功能/属性,例如: 返回字符串 更新: 由于人们在问我为什么要这样做,这里有一个例子。我想从此列表在Pandas中创建一个DataFrame,其中列名称 由实际字典的名
问题内容: 有没有办法在Javascript中将变量名作为字符串获取?喜欢 我想这样做: 更新 我正在尝试使用JavaScript连接浏览器和另一个程序。我想将实例名称从浏览器发送到另一个程序以用作回调方法: 从另一个程序: 问题答案: 通常,在需要将名称映射到某个值并能够同时检索两者的情况下,可以使用哈希表。
假设be有两个变量 有了上面的信息,是否有方法使?
问题内容: 如何在sql查询中传递java字符串变量。我已经完成了所有JDBC连接。 我的SQL数据库查询是 它不起作用。但是,如果我执行以下代码,其工作原理 现在告诉我如何将变量名传递给sql查询以执行此操作。Jst告诉我如何将变量locationnames传递给comp.name。 我完整的Java函数如下所示:locationCombo表示在组合框中选择的项目。CropCombo也表示相同的