data.frame sin arruinar los nombres de las columnas

¿Hay alguna manera de usar data.frame sin arruinar los nombres de las columnas?

Tengo la siguiente estructura:

$`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 

pero después de usar do.call(data.frame, my_list) , obtengo esto:

  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 

(tenga en cuenta que hay. en lugar de ” en los nombres de las columnas)

Puede detener R cambiando los nombres a nombres sintácticamente válidos configurando check.names = FALSE . Ver ?data.frame para más detalles.

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

data.frames en R son en realidad listas. Por lo tanto, esto también es válido:

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

Sabiendo esto, se abren las posibilidades de usar lapply en data.frames, que creo que es genial:

 my_data <- data.frame(my_list, check.names = FALSE) lapply(my_data, IQR)