我有一个预先排序的数据框对象,我试图调用一个需要对其进行排序的函数。 is.unsorted()以某种方式返回true。 R然后进行排序。
[不幸的是,大约有200万个条目,我没有记忆。有没有办法强迫is.unsorted为假?
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