I have a data.frame of the following form:
> set.seed(1)
> myp <- paste0('P', sort(sample(1:15, 10)))
> mydf <- data.frame(param=c(paste0(myp, 'B'), paste0(myp, 'R'), paste0(myp, 'max'), paste0(myp, 'min')),
+ value1=NA, value2=NA, value3=NA)
> rownames(mydf) <- mydf$param
> mydf$param <- NULL
> mydf
value1 value2 value3
P1B NA NA NA
P3B NA NA NA
P4B NA NA NA
P5B NA NA NA
P6B NA NA NA
P8B NA NA NA
P9B NA NA NA
P10B NA NA NA
P11B NA NA NA
P14B NA NA NA
P1R NA NA NA
P3R NA NA NA
P4R NA NA NA
P5R NA NA NA
P6R NA NA NA
P8R NA NA NA
P9R NA NA NA
P10R NA NA NA
P11R NA NA NA
P14R NA NA NA
P1max NA NA NA
P3max NA NA NA
P4max NA NA NA
P5max NA NA NA
P6max NA NA NA
P8max NA NA NA
P9max NA NA NA
P10max NA NA NA
P11max NA NA NA
P14max NA NA NA
P1min NA NA NA
P3min NA NA NA
P4min NA NA NA
P5min NA NA NA
P6min NA NA NA
P8min NA NA NA
P9min NA NA NA
P10min NA NA NA
P11min NA NA NA
P14min NA NA NA
I want to update the names of the rows, and for that I have a conversion table that looks like the following one:
> conv.df <- data.frame(name=myp, new.name=paste0('P', 1:10))
> conv.df
name new.name
1 P1 P1
2 P3 P2
3 P4 P3
4 P5 P4
5 P6 P5
6 P8 P6
7 P9 P7
8 P10 P8
9 P11 P9
10 P14 P10
The only thing I want to do is to update the rownames in mydf
so it reflects the new.names
in the conversion table conv.df
.
It seems very easy but I cannot wrap my head around it... I would try a regular expression
approach, my only problem is that I am not 100% sure that I would ONLY encounter rownames
of the form PnB
, PnR
, Pnmax
, Pnmin
... I would like a solution that applies for any PnX
instance (it would always be Pn
followed by [:alpha:]
)