我有一个命名的字符串列表:
str(nr.genes)
Named chr [1:37] "0" "0" "Pipas_c034_0013" "Pipas_chr1-4_0040" ...
- attr(*, "names")= chr [1:37] "Nr11" "Nr12" "Nr131" "Nr132" ...
我想用字符串名称替换下一个对象中的名称,但不是 1-to-1 :
str(nr.genes.names)
chr [1:16] "up.p33-dw.p33" "up.p33-dw.p38" "up.p33-dw.p52" ...
我想要这样的东西:
str(nr.genes)
Named chr [1:37] "0" "0" "Pipas_c034_0013" "Pipas_chr1-4_0040" ...
- attr(*, "names")= chr [1:37] "up.p33-dw.p33" "up.p33-dw.p38" "up.p33-dw.p52" "up.p33-dw.p52" ...
我手动更改的地方
"Nr11"<-"up.p33-dw.p33"
"Nr12"<-"up.p33-dw.p38"
"Nr131"<-"up.p33-dw.p52"
"Nr132"<-"up.p33-dw.p52" #Note that the third digit doesn't matter
.
.
.
我需要根据前 2 位数字将每个字符串的名称替换为第二个 list 的元素。我尝试了一个 lapply 函数,但我没有管理,我也尝试创建一个涉及sub
和替换的函数,但我看不到任何变化,下面是代码:
lfun <- function(x,y) {
for(o in 1:16){ #Length of the names to substitue for
for (p in 1:4){
for (q in 1:4){
x[sub(paste("Nr", p, q, sep=""), x[o], replacement=y[o])]
}
}
}
}
使用这个函数,我尝试获取第一个参数的所有属性名称,并用它所暗示的元素替换它们。但它返回的结果与我之前的相同,没有任何警告或错误消息。我敢肯定一定有一个简单的方法来做到这一点,但我没有找到正确的
编辑:nr.genes 可以创建如下
nr.genes <- c("0", "0", "Pipas_c034_0013", "Pipas_chr1-4_0040")
attr(nr.genes, "names") <-c("Nr11", "Nr12", "Nr131", "Nr132")
和nr.genes。名字由
nr.genes.names <- c("up.p33-dw.p33", "up.p33-dw.p38", "up.p33-dw.p52")
关于匹配我需要那个Nr11 <-"up.p33-dw.p33"
,但是Nr21<-"<nr.genes.names[5]>"
,然后Nr22<-"<nr.genes.names[6]>",
,Nr23<-"<nr.genes.names[7]>"
然后 Nr24<-"",然后Nr31 <-"<nr.genes.names[9]>"