x = 10
rm(x) # removed x from the environment
x = 10
x %>% rm() # Doesn't remove the variable x
1) Why doesn't pipe technique remove the variable?
2) How do I alternatively use pipe and rm() to remove a variable?
Footnote: This question is perhaps similar to Pipe in magrittr package is not working for function load()
Use the %<>%
operator for assigning the value to NULL
x %<>%
rm()
In the pipe, we are getting the value instead of the object. So, by using the %<>%
i.e. in place compound assignment operator, the value of 'x' is assigned to NULL
x
#NULL
If we need the object to be removed, pass it as character
string, feed it to the list
argument of rm
which takes a character
object and then specify the environment
x <- 10
"x" %>%
rm(list = ., envir = .GlobalEnv)
When we call 'x'
x
Error: object 'x' not found
The reason why the ...
doesn't work is that the object .
is not evaluated within the rm
x <- 10
"x" %>%
rm(envir = .GlobalEnv)
Warning message: In rm(., envir = .GlobalEnv) : object '.' not found
Another option is using do.call
x <- 10
"x" %>%
list(., envir = .GlobalEnv) %>%
do.call(rm, .)
x
Error: object 'x' not found
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With