Ash*_*ith 5 r rm dplyr magrittr
x = 10
rm(x) # removed x from the environment
x = 10
x %>% rm() # Doesn't remove the variable x
Run Code Online (Sandbox Code Playgroud)
1)为什么管道技术不删除变量?
2)如何使用pipe和rm()来删除变量?
脚注:这个问题或许类似于magrittr包中的Pipe不适用于函数load()
使用%<>%运算符为值赋值NULL
x %<>%
rm()
Run Code Online (Sandbox Code Playgroud)
在管道中,我们获取的是值而不是对象.因此,通过使用%<>%ie就地复合赋值运算符,'x'的值被赋值为NULL
x
#NULL
Run Code Online (Sandbox Code Playgroud)
如果我们需要的对象被删除,把它作为 character字符串,它喂到list的参数rm,这需要character对象,然后指定environment
x <- 10
"x" %>%
rm(list = ., envir = .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)
当我们称'x'
x
Run Code Online (Sandbox Code Playgroud)
错误:找不到对象'x'
...不起作用的原因是对象.未在内部进行评估rm
x <- 10
"x" %>%
rm(envir = .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)
警告消息:在rm(.,envir = .GlobalEnv)中:对象'.' 未找到
另一种选择是使用 do.call
x <- 10
"x" %>%
list(., envir = .GlobalEnv) %>%
do.call(rm, .)
x
Run Code Online (Sandbox Code Playgroud)
错误:找不到对象'x'
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |