r - 为什么 `levels<-` 根据命名参数的顺序表现不同?

标签 r

R version 4.0.2 (2020-06-22) -- "Taking Off Again" -- x86_64-pc-linux-gnu
> `levels<-`(factor(c("a", "b")), c("c", "d"))
[1] c d
Levels: c d
> args(`levels<-`)
function (x, value) 
NULL
> `levels<-`(x = factor(c("a", "b")), value = c("c", "d"))
[1] c d
Levels: c d

到目前为止还不错,但是:

> `levels<-`(value = c("c", "d"), x = factor(c("a", "b")))
[1] "c" "d"
attr(,"levels")
[1] a b
Levels: a b

我从一个应该等效的调用中得到了不同的结果。怎么回事?

最佳答案

levels<-通过 Primitive 实现,需要位置匹配。从上一个示例中删除命名参数,您会得到相同的答案。

如果你检查 ?levels<-你会看到:“替换功能是原始的”。关于参数匹配的 R 手册(找到 here)说原始函数:“通常忽略标签并进行位置匹配”

关于r - 为什么 `levels<-` 根据命名参数的顺序表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65904498/

相关文章:

r - 从R中的url读取csv文件时超时

r - R中的置信区间计算

string - 如何使用函数的参数作为变量的名称?

r - 字符串作为 R 公式中的变量引用

r - 在 R 中使用 graph 和 tidygraph 为节点着色?

regex - R:替换数据框多列中的特殊字符

r - 限制 data.frame 中的列超出条件

html - 更改 Reveal JS R Markdown 中的标题字体大小

r - 如何在R中将多维下标存储为变量

r - 如何阻止pdf中的bookdown表格 float 到页面底部?