【发布时间】:2016-07-11 06:21:53
【问题描述】:
我正在尝试合并到每个 df 都有数字列的 data.frames:
> head(tpm)
FUS3_1NM_NO HOG1_1NM_HS IRE1_1NM_HS YAK1_NO_NO WT_NO_NO WT_1NM_NO
Q0010 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000 0.00000000
Q0017 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000 0.00000000
Q0032 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000 0.00000000
Q0045 0.01480327 0.008769000 0.005630685 0.07375834 0.016947766 0.05605933
Q0050 0.01901093 0.000000000 0.006622705 0.11939809 0.011356401 0.05999602
Q0055 0.01642850 0.005019137 0.003222851 0.07277538 0.005526441 0.02537609
> head(fpkm)
WT.basal WT.1NM.PP1 Atg1.AS.1NM.PP1 Fus3.AS.1NM.PP1 Hog1.AS.1NM.PP1
YAL001C 15.8848 21.4220 22.1730 23.9904 21.2069
YAL002W 30.7453 40.4043 45.3739 48.5827 46.2439
YAL003W 3919.8700 2505.7200 2707.6900 2757.9900 2582.3100
YAL007C 444.3640 494.6290 456.1560 489.1200 451.0880
YAL008W 90.1188 136.8680 128.3930 150.6090 160.5000
YAL009W 75.1799 73.7186 78.1866 88.3664 88.5497
我想在 row.name 上合并这些表:
all = merge(tpm,fpkm,by=0,all=T)
> head(all)
Row.names FUS3_1NM_NO HOG1_1NM_HS IRE1_1NM_HS YAK1_NO_NO WT_NO_NO
1 Q0010 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000
2 Q0017 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000
3 Q0032 0.00000000 0.000000000 0.000000000 0.00000000 0.000000000
4 Q0045 0.01480327 0.008769000 0.005630685 0.07375834 0.016947766
5 Q0050 0.01901093 0.000000000 0.006622705 0.11939809 0.011356401
6 Q0055 0.01642850 0.005019137 0.003222851 0.07277538 0.005526441
但是,生成的 data.frame 有一个名为 Row.names 的附加列,并将所有列的类从数字更改为字符。
我必须将这些转换回数字,然后删除 Row.names 列。
有没有办法在 row.name 上进行合并,不包含 row.name 列,并保持 data.frame 的类相同(数字)
【问题讨论】:
-
因为您使用
by = 0(与by = 'row.names'相同,数据框将合并行名,因此添加了Row.names列。此外:使用您提供的示例数据,all的所有列(row.names列除外)在我得到的输出中都是数字。