当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R uniquecombs 找到矩阵中唯一的行


R语言 uniquecombs 位于 mgcv 包(package)。

说明

此例程返回一个矩阵或数据帧,其中包含作为其参数提供的矩阵或数据帧的所有唯一行。也就是说,所有重复的行都被删除。请注意,退出时的行顺序不必与进入时的顺序相同。它还返回一个索引属性,用于将结果与原始矩阵相关联。

用法

uniquecombs(x,ordered=FALSE)

参数

x

是一个R矩阵(数字)或 DataFrame 。

ordered

设置为 TRUE 以使返回对象的行保持相同的顺序,而不管输入顺序如何。

细节

参数多于协变量的唯一组合的模型是不可识别的。此例程提供了一种评估模型中协变量的独特组合数量的方法。

x 只有一列时,例程使用uniquematch 来获取索引。当有多列时,它使用 paste0 为每行生成标签,如果行是唯一的,则标签应该是唯一的。然后uniquematch 可以像单列情况一样使用。显然,粘贴效率低下,但对于较大的 n 来说,仍然比该例程过去调用的基于 C 的代码更快,后者的成本为 O(nlog(n))。原则上,C 语言中基于哈希表的解决方案仅为 O(n),并且在多列情况下速度更快。

如果不需要完整索引,可以使用 uniqueduplicated 来代替它。相对性能是可变的。

如果x 在输入时不是矩阵或数据帧,则尝试将其强制为数据帧。

x 的唯一行(按任意顺序)组成的矩阵或 DataFrame 。

矩阵或 DataFrame 具有"index"属性。 index[i] 给出返回矩阵中包含原始矩阵第 i 行的行。

警告

如果数据帧包含除数字、逻辑、因子或字符之外的类型的变量,这些变量或者没有 as.character 方法,或者其 as.character 方法是多对一映射,则例程可能会失败。

如果数据帧变量的字符表示(字符的类因子除外)包含*,则原则上该方法可能会失败(但会出现警告)。

例子

require(mgcv)

## matrix example...
X <- matrix(c(1,2,3,1,2,3,4,5,6,1,3,2,4,5,6,1,1,1),6,3,byrow=TRUE)
print(X)
Xu <- uniquecombs(X);Xu
ind <- attr(Xu,"index")
## find the value for row 3 of the original from Xu
Xu[ind[3],];X[3,]

## same with fixed output ordering
Xu <- uniquecombs(X,TRUE);Xu
ind <- attr(Xu,"index")
## find the value for row 3 of the original from Xu
Xu[ind[3],];X[3,]


## data frame example...
df <- data.frame(f=factor(c("er",3,"b","er",3,3,1,2,"b")),
      x=c(.5,1,1.4,.5,1,.6,4,3,1.7),
      bb = c(rep(TRUE,5),rep(FALSE,4)),
      fred = c("foo","a","b","foo","a","vf","er","r","g"),
      stringsAsFactors=FALSE)
uniquecombs(df)

作者

Simon N. Wood simon.wood@r-project.org with thanks to Jonathan Rougier

也可以看看

uniqueduplicatedmatch

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 find the unique rows in a matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。