R: rm 和 remove 有什么区别?

13

rmremove有什么不同?

2个回答

24

没有区别;remove是一个别名,其定义为:

Translated version:

没有区别;remove是一个别名,其定义为:

remove <- rm

查看源代码这里


9
为了让OP受益,建议您查看 body(rm)== body(remove) 的内容。这可以通过相应的代码来实现。请注意,翻译过程中不会改变原意,并尽可能简洁易懂。 - Matthew Plourde
与Matthew的评论类似:在控制台中键入“rm”和“remove”将返回相同的代码。 - Carl Witthoft
1
@MatthewPlourde 这里有一个人为制造的例外情况:x <- 10; f1 <- local({x <- 2; function() x}); f2 <- function() xbody(f1) == body(f2)TRUE,但这些函数实际上是“不同的”,f1() 返回的值与 f2() 不同。 - GSee
@GSee 这是一个很好的观点。很容易忘记函数在R中不仅仅是它们的定义。我想identical(environment(rm), environment(remove)) & identical(body(rm), body(remove)) & identical(formals(rm), formals(remove))才是真正正确的方式。看起来这个答案正在成为你的小摇钱树。 :) - Matthew Plourde

2
现在它们是相同的,但如果我记得正确的话(可能只有在S+中),以前rm删除指定元素时不需要引号,而remove则需要引号或包含要删除对象列表的变量。因此,rm将像今天一样用于大多数情况下(不指定任何参数),而remove将像今天的rm(list= ...一样使用。由于两者都很有用,所以它们在一段时间后被合并为rm,但由于人们过去使用了remove,所以将其作为rm的别名。

1
嗯,在R语言中,这种情况至少已经持续了15年 - GSee
@GSee,可能只有在S/S+中有区别,但R保留了两个名称。我第一次接触S的端口是26年前。在那段时间里,很多事情都发生了变化。 - Greg Snow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接