我有问题!
我想定义一个函数来选择df
的变量
这样
select_var <- function(var1, var2)
{
require(dplyr)
select(df=df,var1,var2)
}
使用select_var
之类的select_var(var_name_1,var_name_2)
没有""
。
我要我的df我的变量!
然后我想添加var 3
var 4
,但是有OPTIONNALS设置了您!谢谢!
答案 0 :(得分:2)
您可以按以下方式使用enquo
和!!
select_var <- function(var1, var2)
{
require(tidyverse)
var1 <- enquo(var1)
var2 <- enquo(var2)
select(mtcars, !!var1, !!var2)
}
select_var(mpg, gear)
# mpg gear
#Mazda RX4 21.0 4
#Mazda RX4 Wag 21.0 4
#Datsun 710 22.8 4
#Hornet 4 Drive 21.4 3
#Hornet Sportabout 18.7 3
#Valiant 18.1 3
# ...
不确定您所说的“可选”是什么意思,但也许像这样:
select_var <- function(...)
{
require(tidyverse)
vars <- quos(...)
select(mtcars, !!!vars)
}
select_var(mpg)
select_var(mpg, gear)
select_var(mpg, gear, cyl)
答案 1 :(得分:0)
您可以通过使用which()函数建立索引来从相同或不同的数据框中选择行。您可以使用逻辑运算符在多个变量之间进行操作。
which(df[,var1] == df[,var1] &
df[,var2] == df[,var2])
where()函数将返回满足函数条件的行索引。如果希望它从数据框中返回行,则可以执行以下操作:
df[
which(df[,var1] == df[,var1] &
df[,var2] == df[,var2])
,]
这将调用df中符合您条件的行号。