2017-02-13 8 views
0

グローバル環境にいくつかのデータフレーム(4、すべて.csv)をロードしました。最終的にrbindをすべて1つの新しいデータフレームにスタックします。限り、私は懸念している、私はrbind同じヘッダーを持つデータフレーム、その理由は同じ名前にヘッダーを変更しようとしている理由です。グローバル環境の複数のデータフレームのヘッダーを変更します

私は次のことを試してみました:

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv") 

# then I tried to rename them with a `for loop` 
for(i in filenames) { 
    names(filenames[i]) <- "epitope" 
} 

それはしかし動作しませんでした。 Rは、独立したdata.frames自体(ヘッダーを変更する必要があります)として、filename(すなわち、4つのデータフレーム)の要素を扱うのではなく、単に文字列として扱うという問題があると思います。私が入力した場合:

filenames[1] 

を私はRは、(abc_65prots_all_15mers.csvという名前の)私のデータフレームを出力リレーするために期待していたとき、私は

[1] "abc_65prots_all_15mers.csv" 

を取得します。

+1

使用は '得る問題を解決し(ファイル名は、[I])は'(取得((Iファイル名で){ 名を実際のオブジェクト – GGamba

+1

'を参照しますファイル名は、[I]))< - "エピトープ" } ' その後、 私が手に 'エラーを得たが、( '* TMP *'):オブジェクトのNA " – BCArg

+0

は' i'として、数値ではありませんfound'ありません期待しているかもしれませんが、実際のファイル名です。あなたは '(i in 1:length(filenames))'を試すことができます。 –

答えて

0

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv") 

# Then the loop 
     for(i in filenames) { 
     tables <- get(i) 
     names(tables) <- "epitope" 
     assign(i, tables) 
    } 
0

この未テストの疑似コードでは、このようなことが可能です。 lapplyがあなたのために官僚機構を担当します。 getassignを使用

mf <- Sys.glob(".csv") 

xy <- lapply(mf, read.table, header = TRUE) # read files into a list 

# rename each dataset 
xy <- lapply(xy, FUN = function(x) { 
    names(x) <- c("vector of names") 
}) 

do.call(rbind, xy) # merge all datasets 
+0

'ファイル名< - Sys.glob(" *。csv ")' 'xy < - lapply(X =ファイル名、read.table、header = T)' 'XY < - lapply(XY、FUN =関数(X){ 名(X)< - C( "ペプチド") })' '<最終 - do.call(rbind、XY)' ' を ' [1] [1] "ペプチド" [2] "ペプチド" [3] "ペプチド" [4] "ペプチド" final'残念ながら全く何欲しいです... – BCArg

関連する問題