當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。