Unpacks or binds values into the calling environment. Uses bquote
escaping. NULL is a special case that is unpacked to all targets. NA targets are skipped. All non-NA target names must be unique.
unpack(wrapr_private_value, ...)Arguments wrapr_private_value
list of values to copy
...argument names to write to
Valuevalue passed in (invisible)
DetailsNote: when using []<-
notation, a reference to the unpacker object is written into the unpacking environment as a side-effect of the implied array assignment. :=
assigment does not have this side-effect. Array-assign form can not use the names: .
, wrapr_private_self
, value
, or unpack
. Function form can not use the names: .
or wrapr_private_value
. For more details please see here https://win-vector.com/2020/01/20/unpack-your-values-in-r/.
Related work includes Python
tuple unpacking, zeallot
's arrow, and vadr::bind
.
# named unpacking # looks like assignment: DESTINATION = NAME_VALUE_USING d <- data.frame(x
= 1:2, g
=c('test',
'train'), stringsAsFactors
= FALSE) unpack[train_set
= train, test_set
= test] := split(d,
d$g) # train_set and test_set now correctly split print(train_set)#> x g #> 2 2 train
#> x g #> 1 1 test
rm(list
= c('train_set',
'test_set')) # named unpacking NEWNAME = OLDNAME implicit form # values are matched by name, not index unpack[train,
test] := split(d,
d$g) print(train)#> x g #> 2 2 train
#> x g #> 1 1 test
rm(list
= c('train',
'test')) # function version unpack(split(d,
d$g),
train,
test) print(train)#> x g #> 2 2 train
#> x g #> 1 1 test
rm(list
= c('train',
'test')) # pipe version split(d,
d$g) %.>% unpack(.,
train,
test) print(train)#> x g #> 2 2 train
#> x g #> 1 1 test
rm(list
= c('train',
'test')) # Note: above is wrapr dot-pipe, piping does not currently work with # magrittr pipe due to magrittr's introduction of temporary # intermediate environments during evaluation. # bquote example train_col_name <- 'train' test_col_name <- 'test' unpack(split(d,
d$g), train
= .(train_col_name), test
= .(test_col_name)) print(train)#> x g #> 2 2 train
#> x g #> 1 1 test
rm(list
= c('train',
'test'))
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4