不破坏列名的data.frame
有没有一种方法可以在不破坏列名的情况下使用data.frame 我的结构如下:不破坏列名的data.frame,r,R,有没有一种方法可以在不破坏列名的情况下使用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.
$`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
(注意,列名中有。而不是“”)您可以通过设置
check.names=FALSE
停止R
将名称更改为语法有效的名称。有关详细信息,请参见?data.frame
# assuming your data is in a list called my_list
do.call(data.frame, c(my_list, check.names = FALSE))
R中的data.frames实际上是列表。因此,这也是有效的:
data.frame(my_list, check.names = FALSE)
了解了这一点,就可以在data.frames上使用lappy
,我认为这非常酷:
my_data <- data.frame(my_list, check.names = FALSE)
lapply(my_data, IQR)
my_data使用参数check.names=F
但是,请注意,随后必须将列名换行,与列表中的名称相同。默认情况下,R尝试替换空格的一个原因是,它使以后的某些操作更容易(例如,在列名中使用制表符补全时)。