Apply unique to each element of a list, usually a list of vectors
uniques(
x,
keepNames = TRUE,
incomparables = FALSE,
useBioc = TRUE,
useSimpleBioc = FALSE,
xclass = NULL,
...
)
input list of vectors
boolean indicating whether to keep the list element names in the returned results.
see unique()
for details, this value is only
sent to S4Vectors::unique()
when the Bioconductor package
S4Vectors
is installed, and is ignored otherwise for efficiency.
boolean indicating whether this function should try
to use S4Vectors::unique()
when the Bioconductor package
S4Vectors
is installed, otherwise it will use a somewhat less
efficient bulk operation.
list
with unique values in each list element.
This function will attempt to use S4Vectors::unique()
which is
substantially faster than any apply
family function, especially
for very long lists. However, when S4Vectors
is not installed,
it applies uniqueness to the unlist
ed vector of values, which is
also substantially faster than the apply
family functions for
long lists, but which may still be less efficient than the
C implementation provided by S4Vectors
.
Other jam string functions:
asSize()
,
breaksByVector()
,
cPasteSU()
,
cPasteS()
,
cPasteUnique()
,
cPasteU()
,
cPaste()
,
fillBlanks()
,
formatInt()
,
gsubOrdered()
,
gsubs()
,
makeNames()
,
mixedOrder()
,
mixedSortDF()
,
mixedSorts()
,
mixedSort()
,
mmixedOrder()
,
nameVectorN()
,
nameVector()
,
padInteger()
,
padString()
,
pasteByRowOrdered()
,
pasteByRow()
,
sizeAsNum()
,
tcount()
,
ucfirst()
Other jam list functions:
cPasteSU()
,
cPasteS()
,
cPasteUnique()
,
cPasteU()
,
cPaste()
,
heads()
,
jam_rapply()
,
list2df()
,
mergeAllXY()
,
mixedSorts()
,
rbindList()
,
relist_named()
,
rlengths()
,
sclass()
,
sdim()
,
unnestList()
L1 <- list(CA=nameVector(LETTERS[c(1:4,2,7,4,6)]),
B=letters[c(7:11,9,3)],
D=nameVector(LETTERS[4]));
L1;
#> $CA
#> A B_v1 C D_v1 B_v2 G D_v2 F
#> "A" "B" "C" "D" "B" "G" "D" "F"
#>
#> $B
#> [1] "g" "h" "i" "j" "k" "i" "c"
#>
#> $D
#> D
#> "D"
#>
uniques(L1);
#> $CA
#> A B_v1 C D_v1 G F
#> "A" "B" "C" "D" "G" "F"
#>
#> $B
#>
#> "g" "h" "i" "j" "k" "c"
#>
#> $D
#> D
#> "D"
#>
if (1 == 1) {
if (suppressWarnings(suppressPackageStartupMessages(require(IRanges)))) {
printDebug("Bioc CompressedList:");
print(system.time(uniques(rep(L1, 10000), useBioc=TRUE)));
}
if (suppressWarnings(suppressPackageStartupMessages(require(S4Vectors)))) {
printDebug("Bioc SimpleList:");
print(system.time(uniques(rep(L1, 10000), useSimpleBioc=TRUE)));
}
printDebug("Simple list, keepNames=FALSE:");
print(system.time(uniques(rep(L1, 10000), useBioc=FALSE, keepNames=FALSE)));
printDebug("Simple list, keepNames=TRUE:");
print(system.time(uniques(rep(L1, 10000), useBioc=FALSE, keepNames=TRUE)));
}
#> ## (13:43:49) 10Jun2024: Bioc CompressedList:
#> user system elapsed
#> 0.033 0.001 0.034
#> ## (13:43:50) 10Jun2024: Bioc SimpleList:
#> user system elapsed
#> 0.212 0.004 0.216
#> ## (13:43:50) 10Jun2024: Simple list, keepNames=FALSE:
#> user system elapsed
#> 0.032 0.000 0.033
#> ## (13:43:50) 10Jun2024: Simple list, keepNames=TRUE:
#> user system elapsed
#> 0.389 0.005 0.394