2016-09-27 11 views
1

私はいくつかの文字列を置き換えるカラム名を持つデータフレームのリストを持っていますが、それは正しくできません。リスト内のすべてのデータフレーム内のRgsubカラム名

list: 
[1] 
cpg value.TCGA.06.5415.01A  value.TCGA.02.0003.01A value.TCGA.16.1062.01A 
cg02726808 0.934641544 NA NA 
cg04243127 0.8828403 NA NA 
[2] 
cpg value.TCGA.QH.A6CV.01A value.TCGA.E1.A7Z4.01A value.TCGA.E1.5303.01A 
cg02726808 0.938556343 0.92163563 0.959269597 
cg04243127 0.886928811 0.842963126 0.937700666 
[N] 
..... 

Desired output: 
    list:   
[1]   
cpg 06.5415.01A 02.0003.01A 16.1062.01A 
cg02726808 0.934641544 NA NA 
cg04243127 0.8828403 NA NA 
[2]   
cpg QH.A6CV.01A E1.A7Z4.01A E1.5303.01A 
cg02726808 0.938556343 0.92163563 0.959269597 
cg04243127 0.886928811 0.842963126 0.937700666 
[N]   
..... 

私は次のように記述してみました:R Studioで

lapply(lst, function(x) { gsub("value.TCGA.", "", colnames(lst[[x]]))}) 

エラー:

Error in llis1[[xy]] : invalid subscript type 'list' 
Called from: is.data.frame(x) 
Browse[1]> 

を、私はそれが何であるかを理解していません。ご協力いただきありがとうございます。

答えて

2

setNamesを使用して、列名をsubの新しい列名に置き換えることができます。

lapply(lst, function(x) setNames(x, sub("value.TCGA.", "", names(x)))) 

それとも別のオプション場合substringある 'value.TCGA'。位置は、最初の列名を除くすべての列名で同じです。

lapply(lst, function(x) setNames(x, c("cpg", substring(names(x)[-1], 12))) 
2

この場合

lapply(lst, function(x) { 
    colnames(x) <- gsub("value.TCGA.", "", colnames(x)) 
    return(x) 
}) 

xを試してみてはlstの要素ではなく、lstの要素のインデックスです。あなたのコードでは、lst[[ lst[[1]] ]]をしようとしています。ここから、エラーメッセージは理にかなっているはずです。

関連する問題