magrittr包中的管道不适用于函数rm()

时间:2018-04-04 03:59:57

标签: r dplyr rm magrittr

url(r'^HomePage/',include('HomePage.urls')),

1)为什么管道技术不移除变量?
2)如何使用pipe和rm()来删除变量?

脚注:这个问题可能类似于Pipe in magrittr package is not working for function load()

1 个答案:

答案 0 :(得分:5)

使用%<>%运算符将值分配给NULL

x %<>% 
   rm()

在管道中,我们获取的是值而不是对象。因此,通过使用%<>%即就地复合赋值运算符,'x'的值被赋值为NULL

x
#NULL

如果我们需要删除该对象,请将其作为character字符串传递,将其提供给list rm参数,该参数带有character个对象,然后指定environment

x <- 10
"x" %>% 
    rm(list = ., envir = .GlobalEnv)

当我们称'x'

x
  

错误:未找到对象'x'

...不起作用的原因是对象.未在rm

内进行评估
x <- 10
"x" %>%
    rm(envir = .GlobalEnv)
  

警告消息:在rm(。,envir = .GlobalEnv)中:对象'。'找不到

另一种选择是使用do.call

x <- 10
"x" %>%
   list(., envir = .GlobalEnv) %>% 
   do.call(rm, .)
x
  

错误:未找到对象'x'