查看函数factor
的来源,我看到了这段代码:
if (missing(levels)) {
y <- unique(x, nmax = nmax)
ind <- sort.list(y)
y <- as.character(y)
levels <- unique(y[ind])
}
乍一看,在我看来,在最后一行中使用unique
函数是不必要的。所以我正在搜索2个值,我们称之为v1
和v2
v1 == v2
返回FALSE,但as.character(v1) == as.character(v2)
返回TRUE。但到目前为止找不到它们。
答案 0 :(得分:1)
我认为factor()
中的代码行是处理矩阵,因为unique()
在参数为矩阵时删除重复的 ROWS 。
x <- matrix(rep(1:5, 2), nrow=5)
y <- unique(x) # In this example, unique(x) remove nothing from x
ind <- sort.list(y)
y <- as.character(y)
levels1 <- unique(y[ind])
levels2 <- y[ind]
levels1 # [1] "1" "2" "3" "4" "5"
levels2 # [1] "1" "1" "2" "2" "3" "3" "4" "4" "5" "5"
答案 1 :(得分:1)
我不知道这是factor
中代码行的动机,但这里有一个&#34;值等于字符但不等于其他类型&#34的示例34;
a <- 1-1e-16
b <- 1-1e-17
a==b; as.character(a)==as.character(b)
[1] FALSE
[1] TRUE