force is.unsorted()为false

问题描述 投票:-1回答:1

我有一个预先排序的数据框对象,我试图调用一个需要对其进行排序的函数。 is.unsorted()以某种方式返回true。 R然后进行排序。

[不幸的是,大约有200万个条目,我没有记忆。有没有办法强迫is.unsorted为假?

r arrays sorting dataframe rstudio
1个回答
1
投票

RDocumentation(is.unsorted)的快速检查包括以下行:

注意:如上所述,此功能是为具有一维索引的对象设计的。数据帧,矩阵和其他数组可能会给出令人惊讶的结果。

因此,应避免在完整的数据帧上使用此功能。相反,您应该在数据框的某些功能而不是整个数据框本身上运行此功能。

例如,以下面的代码段为例。您可以看到此函数在一维对象(矢量)上可以正常工作;但是,在数据帧上运行时会产生令人惊讶的结果(当期望FALSE结果时返回TRUE。)>

但是,当数据帧是子集(使用$运算符)并且is.unsorted()函数在各个功能上运行时,它将返回预期的结果。

> vec <- c(1,2,3,4,5)
> is.unsorted(vec)  # Expected: FALSE
[1] FALSE

> vec <- c(1,3,2,5,4)
> is.unsorted(vec)  # Expected: TRUE
[1] TRUE

> vec <- c("A","B","C","D","E")
> is.unsorted(vec)  # Expected: FALSE
[1] FALSE

> vec <- c("A","C","B","E","D")
> is.unsorted(vec)  # Expected: TRUE
[1] TRUE

> dat <- data.frame(num=c(1,2,3,4,5)
+                  ,chr=c("A","B","C","D","E")
+                  ,stringsAsFactors=FALSE
+                  )
> is.unsorted(dat)  # Expected: FALSE
[1] FALSE

> dat <- data.frame(num=c(1,3,2,5,4)
+                  ,chr=c("A","B","C","D","E")
+                  ,stringsAsFactors=FALSE
+                  )
> is.unsorted(dat)  # Expected: TRUE
[1] FALSE

> is.unsorted(dat$num)  # Expected: TRUE
[1] TRUE

> is.unsorted(dat$chr)  # Expected: FALSE
[1] FALSE
© www.soinside.com 2019 - 2024. All rights reserved.