R 每隔一列拆分一个数据帧以创建两个单独的文件

R 每隔一列拆分一个数据帧以创建两个单独的文件,r,optimization,R,Optimization,我希望(一如既往)使用性能更好但功能相当于以下内容的代码: write.table(results.df[seq(1, ncol(results.df),2)],file="/path/file.txt", row.names=TRUE, sep="\t") write.table(results.df[seq(2, ncol(results.df),2)],file="/path/file2.txt",row.names=TRUE, sep="\t") results.df是一个数据帧,看

我希望(一如既往)使用性能更好但功能相当于以下内容的代码:

write.table(results.df[seq(1, ncol(results.df),2)],file="/path/file.txt", row.names=TRUE, sep="\t") 
write.table(results.df[seq(2, ncol(results.df),2)],file="/path/file2.txt",row.names=TRUE, sep="\t")
results.df
是一个数据帧,看起来如下:

row.names 171401    171401 111201     111201
    1      1     0.8320923  10     0.8320923
    2      2     0.8510621  11     0.8510621
    3      3     0.1009001  12     0.1009001
    4      4     0.9796110  13     0.9796110
    5      5     0.4178686  14     0.4178686
    6      6     0.6570377  15     0.6570377
    7      7     0.3689075  16     0.3689075
列标题中没有一致的图案,只是每个图案连续重复两次

我想创建(1)一个文件,其中只有奇数列的
results.df
,(2)另一个文件,其中只有偶数列的
results.df
。我在上面有一个解决方案,但我想知道是否有更好的方法来实现同样的目标


想法更新:我在想可能有某种方法可以删掉——从内存中删除——每个处理过的列,而不仅仅是复制它。通过这种方式,数据帧的大小逐渐减小,并可能导致性能提高???

代码只略短,但

# Instead of 
results.df[seq(1, ncol(results.df), 2]
results.df[seq(2, ncol(results.df), 2]
#you could use 
results.df[c(T,F)]
results.df[c(F,T)]

这样做效果很好,而且确实加快了速度。但是写下表格怎么样。。。还有比这更快的吗?我不这么认为-你想写一个表,使用write.table是我所知道的最好的方法…@Kaleb,如
?write.table
,如果你有很多列
write。table
可能很慢,因为它必须检查每一列的类型。如果每一列都是数字的,那么写矩阵可能比写数据框更快。我想为未来的数据集包含逻辑和数字数据的混合。对于这组特定的数据,一个数字-因此是一个矩阵-可能是合适的。然而,我认为
0-1
而不是
TRUE
-
FALSE
是一个选项。我想知道是否有任何软件包提供了写入.table的替代方案。@Kaleb写入磁盘通常会受到硬盘和操作系统的更多限制。如果您想要更快的写入时间,请购买更快的HD。当然,这些序列的生成不是任何类型的瓶颈。@DWin是:大约有1000列和200万行。上面的数据只是模式的象征。我不认为对
seq
的单个调用会成为该过程中的任何瓶颈。可能不是
seq
本身,而是包含
seq
的每个语句肯定是。我不一定要删除
seq
(尽管Dason的建议可能更好)。我认为有必要提及如何使用数据帧中的数据。