我有一个对象,它的结构非常像以下替换特定的属性名称
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比1,S
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 number doesn't matter
.
.
.
我需要根据前两个数字,第二个列表的元素来替换每个属性的名称。我曾尝试与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创建。基因。通过
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]>"
您好,欢迎计算器!如果您提供[最小,可重现的数据集],您更有可能收到有用答案(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/ 5963610#5963610)。你能否也请澄清'nr.genes'与'nr.genes.names'匹配的'规则'。谢谢! – Henrik
你不回答Henrik在这里回答!您的匹配规则不明确。 Nr11 < - “up.p33-dw.p33”,但Nr21 < - “”?我在这里没有看到任何关系! –
agstudy
这个数字来自两组对象之间的比较,每组有4个数据(这就是为什么Nr从11,12,13,14,21,22,23,24,31,32,33,34, 42,43,44),这是他们之间的比较。为了做这个比较,我做了一个循环,将每个结果存储在这个对象名称Nr + + 中,但是要使用'unlist(mget(nr.list))'(nr。列表是我存储所有Nr对象的地方),它将这个第三个数字分开并添加到names属性中。所以我想从这个基因的比较中弄清楚。 –
Llopis