Get variables/range of variables by name/by pattern.
vars returns data.frame with all variables by their names or
by criteria (see criteria). There is no non-standard evaluation in
this function by design so use quotes for names of your variables. This
function is intended to get variables by parameter/criteria. The only
exception with non-standard evaluation is %to%. You can use
%to% inside vars or independently.
..p returns data.frame with all variables which names satisfy
supplied perl-style regular expression. Arguments for this function is quoted
characters. It is a shortcut for vars(perl(pattern)).
..f returns data.frame with all variables which names contain
supplied pattern. Arguments for this function can be unquoted. It is a
shortcut for vars(fixed(pattern)).
..t returns data.frame with variables which names are stored
in the supplied arguments. Expressions in characters in curly brackets are
expanded. See text_expand.
..[] returns data.frame with all variables by their names or
by criteria (see criteria). Names at the top-level can be unquoted
(non-standard evaluation). For standard evaluation of parameters you can
surround them by round brackets. You can assign to this expression. If there
are several names inside square brackets then each element of list/data.frame
from right side will be assigned to appropriate name from left side. You can
use item1 %to% item2 notation to get/create sequence of variables.
If there are no arguments inside square brackets than from each item of RHS
will be created separate variable in the parent frame. In this case RHS
should be named list or data.frame.
..$name sets/returns object which name is stored in the
variable name. It is convenient wrapper around
get/assign functions.
%to% returns range of variables between e1 and
e2 (similar to SPSS 'to'). modify, modify_if,
calculate, keep, except and where support
%to%.
indirect/indirect_list are aliases for
vars/vars_list.
Functions with word 'list' in name return lists of variables instead of dataframes.
vars(...) vars_list(...) indirect(...) indirect_list(...) e1 %to% e2 e1 %to_list% e2 .. ..f(...) ..p(...) ..t(...)
... |
characters names of variables or criteria/logical functions |
e1 |
unquoted name of start variable (e. g. a_1) |
e2 |
unquoted name of start variable (e. g. a_5) |
An object of class parameter of length 1.
data.frame/list with variables
# In data.frame
dfs = data.frame(
a = rep(1, 5),
b_1 = rep(11, 5),
b_2 = rep(12, 5),
b_3 = rep(13, 5),
b_4 = rep(14, 5),
b_5 = rep(15, 5)
)
# calculate sum of b_* variables
compute(dfs, {
b_total = sum_row(b_1 %to% b_5)
})
# identical result
compute(dfs, {
b_total = sum_row(..f(b_))
})
compute(dfs, {
b_total = sum_row(..t("b_{1:5}"))
})
# In global environement
a = rep(10, 5)
a1 = rep(1, 5)
a2 = rep(2, 5)
a3 = rep(3, 5)
a4 = rep(4, 5)
a5 = rep(5, 5)
# identical results
a1 %to% a5
vars(perl("^a[0-9]$"))
..[perl("^a[0-9]$")]
..p("^a[0-9]$")
..t("a{1:5}")
# sum each row
sum_row(a1 %to% a5)
# variable substitution
name1 = "a"
name2 = "new_var"
# in global environment
..$name1 # give as variable 'a'
..$name2 = ..$name1 * 2 # create variable 'new_var' which is equal to 'a' times 2
new_var
# inside data.frame
compute(dfs, {
..$name2 = ..$name1*2
})
compute(dfs, {
for(name1 in paste0("b_", 1:5)){
name2 = paste0("new_", name1)
..$name2 = ..$name1*2
}
rm(name1, name2) # we don't need this variables as columns in 'dfs'
})
# square brackets notation - multi-assignment
name1 = paste0("b_", 1:5)
compute(dfs, {
# round brackets about 'name1' is needed to avoid using it 'as is'
..[paste0("new_", name1)] = ..[(name1)]*2
})
# the same result
# note the automatic creation of sequence of variables
compute(dfs, {
..[new_b_1 %to% new_b_5] = ..[b_1 %to% b_5]*2
})
# assignment form of 'recode' on multiple variables
compute(dfs, {
recode(..[b_1 %to% b_5]) = 13 %thru% hi ~ 20
})
# empty brackets - unboxing of dichotomy.
compute(dfs, {
..[] = as.dichotomy(b_1 %to% b_5, prefix = "v_")
})Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.