我有一個對象,它的結構非常像以下替換特定的屬性名稱
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