Unique column names for a list of data tables
I have a list of 200 data tables as shown below
[[1]]
SYMBOL SIGNALINTENSITY CALL PVALUE
1: DDR1 1272.0796 P 0.0029235941
2: MIR4640 1272.0796 P 0.0029235941
3: RFC2 501.8763 A 0.2040220548
4: HSPA6 721.1877 P 0.0038229257
5: PAX8 2807.3700 P 0.0006731656
6: GUCA1A 213.1593 A 0.2668473097
[[2]]
SYMBOL SIGNALINTENSITY CALL PVALUE
1: FAM86B1 168.5479 A 0.2189832287
2: FAM86FP 168.5479 A 0.2189832287
3: FAM86B2 168.5479 A 0.2189832287
4: FAM86DP 168.5479 A 0.2189832287
5: LOC100505915 773.4419 P 0.0005617505
6: LINC00273 670.4535 P 0.0002967575
[[3]]
SYMBOL SIGNALINTENSITY CALL PVALUE
1: FAM86B1 168.5479 A 0.2189832287
2: FAM86FP 168.5479 A 0.2189832287
3: FAM86B2 168.5479 A 0.2189832287
4: FAM86DP 168.5479 A 0.2189832287
5: LOC100505915 773.4419 P 0.0005617505
6: LINC00273 670.4535 P 0.0002967575
I want to uniquely rename the columns of the data table. As shown below, the columns are indexed at 1,2,3 based on the list order. The first column name should be the same as I need to concatenate the list by the first column.
[[1]]
SYMBOL SIGNALINTENSITY1 CALL1 PVALUE1
1: DDR1 1272.0796 P 0.0029235941
2: MIR4640 1272.0796 P 0.0029235941
3: RFC2 501.8763 A 0.2040220548
4: HSPA6 721.1877 P 0.0038229257
5: PAX8 2807.3700 P 0.0006731656
6: GUCA1A 213.1593 A 0.2668473097
[[2]]
SYMBOL SIGNALINTENSITY2 CALL2 PVALUE2
1: FAM86B1 168.5479 A 0.2189832287
2: FAM86FP 168.5479 A 0.2189832287
3: FAM86B2 168.5479 A 0.2189832287
4: FAM86DP 168.5479 A 0.2189832287
5: LOC100505915 773.4419 P 0.0005617505
6: LINC00273 670.4535 P 0.0002967575
[[3]]
SYMBOL SIGNALINTENSITY3 CALL3 PVALUE3
1: FAM86B1 168.5479 A 0.2189832287
2: FAM86FP 168.5479 A 0.2189832287
3: FAM86B2 168.5479 A 0.2189832287
4: FAM86DP 168.5479 A 0.2189832287
5: LOC100505915 773.4419 P 0.0005617505
6: LINC00273 670.4535 P 0.0002967575
+3
source to share
1 answer
if 'lst' is a list data.table
(it seems data.table
instead data.frame
)
library(data.table)
lapply(seq_along(lst), function(i) setnames(lst[[i]],
2:ncol(lst[[i]]), paste0(names(lst[[i]])[-1],i)))
lst
#[[1]]
# SYMBOL SIGNALINTENSITY1 CALL1 PVALUE1
#1: DDR1 1272.0796 P 0.0029235941
#2: MIR4640 1272.0796 P 0.0029235941
#3: RFC2 501.8763 A 0.2040220548
#4: HSPA6 721.1877 P 0.0038229257
#5: PAX8 2807.3700 P 0.0006731656
#6: GUCA1A 213.1593 A 0.2668473097
#[[2]]
# SYMBOL SIGNALINTENSITY2 CALL2 PVALUE2
#1: FAM86B1 168.5479 A 0.2189832287
#2: FAM86FP 168.5479 A 0.2189832287
#3: FAM86B2 168.5479 A 0.2189832287
#4: FAM86DP 168.5479 A 0.2189832287
#5: LOC100505915 773.4419 P 0.0005617505
#6: LINC00273 670.4535 P 0.0002967575
#[[3]]
# SYMBOL SIGNALINTENSITY3 CALL3 PVALUE3
#1: FAM86B1 168.5479 A 0.2189832287
#2: FAM86FP 168.5479 A 0.2189832287
#3: FAM86B2 168.5479 A 0.2189832287
#4: FAM86DP 168.5479 A 0.2189832287
#5: LOC100505915 773.4419 P 0.0005617505
#6: LINC00273 670.4535 P 0.0002967575
+3
source to share