assign unique names for a vector
nameVector(x, y = NULL, makeNamesFunc = makeNames, ...)
vector input, or data.frame, matrix, or tibble with two columns, the second column is used to name values in the first column.
NULL or character vector of names. If NULL then x is used.
Note that y is recycled to the length of x, prior to being sent
to the makeNamesFunc.
In fringe cases, y can be a matrix, data.frame, or tibble, in which
case pasteByRow
will be used to create a character string
to be used for vector names. Note this case is activated only when x
is not a two column matrix, data.frame, or tibble.
function to make names unique, by default
makeNames
which ensures names are unique.
passed to makeNamesFunc
, or to
pasteByRow
if y is a two column data.frame, matrix, or
tibble. Thus, sep
can be defined here as a delimiter between
column values.
vector with names defined
This function assigns unique names to a vector, if necessary it runs
makeNames
to create unique names. It differs from
setNames
in that it ensures names are unique,
and when no names are supplied, it uses the vector itself to define
names. It is helpful to run this function inside an lapply
function call, which by default maintains names, but does not assign
names if the input data did not already have them.
When used with a data.frame, it is particularly convenient to pull out a named vector of values. For example, log2 fold changes by gene, where the gene symbols are the name of the vector.
nameVector(genedata[,c("Gene","log2FC")])
Other jam string functions:
asSize()
,
breaksByVector()
,
cPasteSU()
,
cPasteS()
,
cPasteUnique()
,
cPasteU()
,
cPaste()
,
fillBlanks()
,
formatInt()
,
gsubOrdered()
,
gsubs()
,
makeNames()
,
mixedOrder()
,
mixedSortDF()
,
mixedSorts()
,
mixedSort()
,
mmixedOrder()
,
nameVectorN()
,
padInteger()
,
padString()
,
pasteByRowOrdered()
,
pasteByRow()
,
sizeAsNum()
,
tcount()
,
ucfirst()
,
uniques()
# it generally just creates names from the vector values
nameVector(LETTERS[1:5]);
#> A B C D E
#> "A" "B" "C" "D" "E"
# if values are replicated, the makeNames() function makes them unique
V <- rep(LETTERS[1:5], each=3);
nameVector(V);
#> A_v1 A_v2 A_v3 B_v1 B_v2 B_v3 C_v1 C_v2 C_v3 D_v1 D_v2 D_v3 E_v1 E_v2 E_v3
#> "A" "A" "A" "B" "B" "B" "C" "C" "C" "D" "D" "D" "E" "E" "E"
# for a two-column data.frame, it creates a named vector using
# the values in the first column, and names in the second column.
df <- data.frame(seq_along(V), V);
df;
#> seq_along.V. V
#> 1 1 A
#> 2 2 A
#> 3 3 A
#> 4 4 B
#> 5 5 B
#> 6 6 B
#> 7 7 C
#> 8 8 C
#> 9 9 C
#> 10 10 D
#> 11 11 D
#> 12 12 D
#> 13 13 E
#> 14 14 E
#> 15 15 E
nameVector(df);
#> A_v1 A_v2 A_v3 B_v1 B_v2 B_v3 C_v1 C_v2 C_v3 D_v1 D_v2 D_v3 E_v1 E_v2 E_v3
#> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Lastly, admittedly a fringe case, it can take a multi-column data.frame
# to generate labels:
nameVector(V, df);
#> 1_A 2_A 3_A 4_B 5_B 6_B 7_C 8_C 9_C 10_D 11_D 12_D 13_E 14_E 15_E
#> "A" "A" "A" "B" "B" "B" "C" "C" "C" "D" "D" "D" "E" "E" "E"