2017-08-06 22 views
1

列はサンプル名(n = 384)に対応し、行は遺伝子エンティティ(n = 180200)に対応するdata.frameというdataOrderを持っています。 t1_、t2_、t3_、t4_とt5_:R:データフレーム内の複数の列名を置換し、数値を保持

   sample1 sample2 sample3 sample4 sample5 sample6 
ENST00000000233  9  0 3499.51   0   0   0 
ENST00000000412  0  0  0.00   0   0   0 
ENST00000000442  0  0  0.00   0   0   0 
ENST00000001008  0  0  0.00   0   0   0 
ENST00000001146  0  0  0.00   0   0   0 
ENST00000002125  0  0  0.00   0   0   0 

私は、5つの異なる名前に列名(STR sample)の一部を代用したいと思います。

私は名前を代入するGSUB機能を使用しようとしました:

nameVec <- names(dataOrder) 
nameVec <- gsub("sample","t2_",nameVec[1:96]) 
nameVec <- gsub("sample","t3_",nameVec[97:163]) 
nameVec <- gsub("sample","t4_",nameVec[164:259]) 
nameVec <- gsub("sample","t5_",nameVec[260:333]) 
nameVec <- gsub("sample","t1_",nameVec[334:384]) 
names(dataOrder) <- nameVec 
head(dataOrder) 

しかし、私の列名のすべてがNAに置換しました。

タイトルに「サンプル」文字列を置き換えて、数値インデックスを列に入れておくことはできますか?ここで

    t1_1 t1_96  t2_97 t2_163 t3_164 t3_259 
ENST00000000233  9  0 3499.51   0   0   0 
ENST00000000412  0  0  0.00   0   0   0 
ENST00000000442  0  0  0.00   0   0   0 
ENST00000001008  0  0  0.00   0   0   0 
ENST00000001146  0  0  0.00   0   0   0 
ENST00000002125  0  0  0.00   0   0   0 

は(@RuiBarradasによって書かれた)再生可能なデータの例である:

mydf <- 
structure(list(target_id = c("ENST00000000233", "ENST00000000412", 
"ENST00000000442", "ENST00000001008", "ENST00000001146", "ENST00000002125" 
), sample1 = c(9L, 0L, 0L, 0L, 0L, 0L), sample10 = c(0L, 0L, 
0L, 0L, 0L, 0L), sample100 = c(3499.51, 0, 0, 0, 0, 0), sample101 = c(0L, 
0L, 0L, 0L, 0L, 0L), sample102 = c(0L, 0L, 0L, 0L, 0L, 0L), sample103 = c(0L, 
0L, 0L, 0L, 0L, 0L)), .Names = c("target_id", "sample1", "sample10", 
"sample100", "sample101", "sample102", "sample103"), class = "data.frame", row.names = c("1:", 
"2:", "3:", "4:", "5:", "6:")) 

result <- mydf[-1] 
row.names(result) <- mydf$target_id 
result 

ありがとうございました!

答えて

3

すべてのベクトルをそのセグメントのみで置き換えます。代わりにお試しください

nameVec <- names(dataOrder) 
nameVec[1:96] <- gsub("sample", "t2_", nameVec[1:96]) 
nameVec[97:163] <- gsub("sample", "t3_", nameVec[97:163]) 
nameVec[164:259] <- gsub("sample", "t4_", nameVec[164:259]) 
nameVec[260:333] <- gsub("sample", "t5_", nameVec[260:333]) 
nameVec[334:384] <- gsub("sample", "t1_", nameVec[334:384]) 
names(dataOrder) <- nameVec 
+0

ありがとうございました! –

関連する問題