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的建议可能更好)。我认为有必要提及如何使用数据帧中的数据。