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

标签 r dplyr magrittr

x = 10
rm(x) # removed x from the environment

x = 10
x %>% rm() # Doesn't remove the variable x 

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

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

最佳答案

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

x %<>% 
   rm()

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

如果我们需要删除对象,请将其传递为 character字符串,将其提供给 list rm 的论据这需要一个 character对象,然后指定 environment
x <- 10
"x" %>% 
    rm(list = ., envir = .GlobalEnv)

当我们调用“x”时
x

Error: object 'x' not found


...的原因不起作用的是对象 .未在 rm 内评估
x <- 10
"x" %>%
    rm(envir = .GlobalEnv)

Warning message: In rm(., envir = .GlobalEnv) : object '.' not found



另一种选择是使用 do.call
x <- 10
"x" %>%
   list(., envir = .GlobalEnv) %>% 
   do.call(rm, .)
x

Error: object 'x' not found

关于r - magrittr 包中的管道不适用于函数 rm(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642537/

相关文章:

r - 修复针织文档输出中 ## 后的不一致间距

r - 基于Newton-Raphson和矩量法的最大似然估计

r - 将列中以冒号分隔的字符串拆分为 R 中的不同列

r - 如何在iGraph中为不同顶点设置不同的透明度

r - 如何在R中编写匿名函数箭头交叉

r - 如何在不循环的情况下删除列值组合冲突的行?

r - 在 group_by 中,改变一个新列,根据列的出现顺序获取列的值

R 管道 (%>%) 功能 - 存储和部分使用?

r - 为什么功能序列不适用于 ggplot2?

r - 在嵌套数据框的列上实现 map()