2012-09-06 9 views
10

data.frameを列名を破壊することなく使用する方法はありますか?data.frame列名を破損することなく

私は構造を以下している

$`Canon PowerShot` 
[1] 9.997803e-01 9.997318e-01 3.327920e-01 3.327920e-01 9.988220e-01 
[6] 4.030871e-05 4.928497e-05 

$`Casio Exilim` 
[1] 5.322024e-06 9.999646e-01 5.322024e-06 5.322024e-06 9.999646e-01 
[6] 5.322024e-06 9.999646e-01 

$FinePix 
[1] 3.850036e-05 9.998887e-01 6.650074e-02 6.650074e-02 9.998465e-01 
[6] 9.998465e-01 4.345598e-05 

$`Kodak EasyShare` 
[1] 3.548812e-05 9.998604e-01 3.996137e-01 3.996137e-01 9.987841e-01 
[6] 3.179604e-05 2.789861e-05 

$`Nikon Coolpix series` 
[1] 9.156401e-02 9.998091e-01 1.995972e-01 1.995972e-01 9.996341e-01 
[6] 7.033741e-05 8.499410e-05 

が、do.call(data.frame, my_list)を使用した後、私はこれを取得:

Canon.PowerShot Casio.Exilim  FinePix Kodak.EasyShare 
1 9.997803e-01 5.322024e-06 3.850036e-05 3.548812e-05 
2 9.997318e-01 9.999646e-01 9.998887e-01 9.998604e-01 
3 3.327920e-01 5.322024e-06 6.650074e-02 3.996137e-01 
4 3.327920e-01 5.322024e-06 6.650074e-02 3.996137e-01 
5 9.988220e-01 9.999646e-01 9.998465e-01 9.987841e-01 
6 4.030871e-05 5.322024e-06 9.998465e-01 3.179604e-05 
7 4.928497e-05 9.999646e-01 4.345598e-05 2.789861e-05 
    Nikon.Coolpix.series 
1   9.156401e-02 
2   9.998091e-01 
3   1.995972e-01 
4   1.995972e-01 
5   9.996341e-01 
6   7.033741e-05 
7   8.499410e-05 

(代わりに、列名に '' であります注意してください。)

+0

:これを知っ

data.frame(my_list, check.names = FALSE) 

は、私はかなりクールだと思うdata.framesにlapplyを使用しての可能性を、開きます' – mnel

答えて

13

をあなたがRは、check.names = FALSEを設定することによって、名前を構文的に有効な名前に変更することを停止できます。詳細は?data.frameを参照してください。

# assuming your data is in a list called my_list 
do.call(data.frame, c(my_list, check.names = FALSE)) 
+0

それはありがとう、 – Arg

+2

しかし、リスト内の名前と同じように、バッククォートで列名をラップする必要があることに注意してください。 Rがデフォルトでスペースを置き換えようとする理由の1つは、後で(例えば、列名にタブ補完を使用するとき)操作が簡単になるということです。 – neilfws

4

data.frames in Rは実際にはリストです。したがって、これも有効です。引数 `check.names = Fを使用

my_data <- data.frame(my_list, check.names = FALSE) 
lapply(my_data, IQR) 
関連する問題