R使用formals()更改默认值对sort()不起作用

R使用formals()更改默认值对sort()不起作用,r,default-value,R,Default Value,我意识到使用formals(sort)$discreating注意sort()与sample()不同,它是R中的一个泛型函数。如果只键入sort而不使用括号,可以看到它调用useMethod(),这就是它触发S3泛型行为的方式。那里的代码实际上并没有得到“run”,它只是根据传递给它的对象的类启动正确的sort版本。但是,您可以这样做 sort(1:5) # [1] 1 2 3 4 5 formals(sort.default)$decreasing <- TRUE sort(1:5) #

我意识到使用
formals(sort)$discreating注意
sort()
sample()
不同,它是R中的一个泛型函数。如果只键入
sort
而不使用括号,可以看到它调用
useMethod()
,这就是它触发S3泛型行为的方式。那里的代码实际上并没有得到“run”,它只是根据传递给它的对象的类启动正确的sort版本。但是,您可以这样做

sort(1:5)
# [1] 1 2 3 4 5
formals(sort.default)$decreasing <- TRUE
sort(1:5)
# [1] 5 4 3 2 1

我不知道,但是。。。这种类型的更改具有使代码不完全可复制的副作用,类似于设置
选项(stringsAsFactors=FALSE)
。它对您有效,但如果您给某人的代码看起来像是排序(示例(5))
,那么(根据您的代码)它应该使用
递减=FALSE对其排序(默认值)。显式需要多按几个键,但更便于携带。只是我的意见。谢谢你的回答,我部分同意!然而,我对一种改变代码形式的正确方法感兴趣!Re@ R2EvAs评论,我们可以考虑更透明的方法:<代码> MySo排序=排序;形式(mysort)[“递减”]]=TRUE;mysort(1:5)
——仍然遇到同样的问题。
sort(1:5)
# [1] 1 2 3 4 5
formals(sort.default)$decreasing <- TRUE
sort(1:5)
# [1] 5 4 3 2 1
base::sort.default(1:5)
# [1] 1 2 3 4 5