R语言动态创建压缩文件

动态创建压缩文件,可以简单地理解为将结果写出到压缩文件,而不是先写出到文件然后压缩。

R语言中,R包vroom就可以实现这一过程。

逐行写出函数vroom_write_lines与数据表写出函数vroom_write,可以通过识别文件后缀名的方式实现动态创建压缩文件。

生物信息中常见的压缩格式为.gz 压缩,这里以拟南芥的基因组序列进行测试。

下载

我的windows上也安装了axel,因此这里直接使用axel下载基因组。下载后的压缩文件为35M左右

library(vroom)

command <- "axel -n 20 https://ftp.ensemblgenomes.ebi.ac.uk/pub/plants/release-57/fasta/arabidopsis_thaliana/dna/Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz"
system(command = command)

ath_file <- "Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz"

file.size(ath_file)
# [1] 36462703 # 35M左右

按行读取

vroom_lines 按行读入数据,读入结果为字符串向量。

vroom 读入数据表数据,读入结果为数据框(“spec_tbl_df”, “tbl_df” , “tbl” , “data.frame”)。

这里按行读入fasta数据。

ath <- vroom_lines(file = ath_file)

class(ath)
# [1] "character"

ath[1:2]
# [1] ">1 dna:chromosome chromosome:TAIR10:1:1:30427671:1 REF"      
# [2] "CCCTAAACCCTAAACCCTAAACCCTAAACCTCTGAATCCTTAATCCCTAAATCCCTAAAT"

写出未压缩文件

结果文件在116M左右。

vroom_write_lines(ath, file = "ath.fa", eol = "\n")
file.size("ath.fa")
# [1] 121662600  # 116M左右

写出压缩文件

通过.gz后缀名识别并动态创建压缩文件。结果文件在35M左右

vroom_write_lines(ath, file = "ath.fa.gz", eol = "\n")
file.size("ath.fa.gz")

# [1] 36461631 # 35M左右

可以看到,加了.gz的结果文件"ath.fa.gz"与原压缩文件大小相近,且远小于未压缩的"ath.fa" 文件。说明动态常见压缩文件成功了。

全部代码

library(vroom)

command <- "axel -n 20 https://ftp.ensemblgenomes.ebi.ac.uk/pub/plants/release-57/fasta/arabidopsis_thaliana/dna/Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz"
system(command = command)

ath_file <- "Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz"

file.size(ath_file)
# [1] 36462703 # 35M左右

ath <- vroom_lines(file = ath_file)
class(ath)
# 未压缩
vroom_write_lines(ath, file = "ath.fa", eol = "\n")
file.size("ath.fa")
# [1] 121662600  # 116M左右

# 压缩
vroom_write_lines(ath, file = "ath.fa.gz", eol = "\n")
file.size("ath.fa.gz")

# [1] 36461631 # 35M左右
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 在/home目录下创建一个新的空文件file1:可以使用touch命令创建空文件,如下所示: ```bash touch /home/file1 ``` 复制系统文件/etc/profile到/home目录下:可以使用cp命令,如下所示: ```bash cp /etc/profile /home/ ``` 2. 在root下创建目录名称为test1的目录:可以使用mkdir命令,如下所示: ```bash mkdir /root/test1 ``` 3. 使用vim同时新建并编辑两个文件fle1和fle2:可以使用vim命令,如下所示: ```bash vim /home/fle1 /home/fle2 ``` 在两个文件中分别输入"Linux test!"字样:在vim命令模式下,先按下i键切换到编辑模式,然后输入需要编辑的内容,最后按下Esc键回到命令模式,保存并退出可以按下:wq键。 4. 建立组群,使用命令groupadd group1:可以使用groupadd命令,如下所示: ```bash groupadd group1 ``` 删除用户,使用命令userdel username:可以使用userdel命令,如下所示: ```bash userdel username ``` 5. 显示系统核心路由表;查看系统开启的TCP端口:可以使用route命令和netstat命令,如下所示: ```bash route -n # 显示系统核心路由表 netstat -tnlp # 查看系统开启的TCP端口 ``` 6. 将家目录下的所有文件<不包括目录,压缩成文件test1.zip,将test1.zip解压至/(tmp):可以使用zip和unzip命令,如下所示: ```bash cd ~ # 进入家目录 zip -r test1.zip * -x "*/" # 将家目录下所有文件压缩成test1.zip,不包括目录 mv test1.zip /tmp # 将test1.zip移动到/tmp目录下 cd /tmp # 进入/tmp目录 unzip test1.zip # 解压test1.zip ``` 7. 输入命令(top),屏幕动态显示CPU利用率,内存利用率和进程状态等相关信息:可以使用top命令,如下所示: ```bash top ``` 按下大写的P键可以按照CPU使用率排列所有进程,按下大写的M键可以按照内存使用率排列所有进程,按下大写的T键可以按照执行时间排列所有进程。 8. 设置一个调度,要求在2021年10月1日0时,向所有用户发送国庆快乐的问候:可以使用crontab命令,如下所示: ```bash crontab -e ``` 在编辑器中添加以下内容: ```bash 0 0 1 10 * echo "Happy National Day!" | wall ``` 这表示在每年的10月1日0时向所有用户发送"Happy National Day!"的问候。 9. 显示系统的路由设备;给系统添加缺省网关192.168.3.1:可以使用route命令,如下所示: ```bash route # 显示系统的路由设备 route add default gw 192.168.3.1 # 添加缺省网关192.168.3.1 ``` 10. 打开/cte下的某个文件,显示打开文件的行号:可以使用cat命令或者less命令,如下所示: ```bash cat -n /cte/文件名 # 显示文件的行号 less /cte/文件名 # 打开文件并且可以翻页查看 ``` 11. vim编辑器中,复制当前行使用命令(yy);撤销前一步操作使用命令(双自):可以使用vim命令,如下所示: ```bash yy # 复制当前行 u # 撤销前一步操作 ``` 12. C语言编程,实现在屏幕上打印输出"hello world!": ```c #include <stdio.h> int main() { printf("hello world!\n"); return 0; } ``` 13. 在/home目录创建一个新的空文件test:利用cp命令复制系统文件/etc/profile到/home目录下;查看/home目录下文件的权限: ```bash touch /home/test # 在/home目录下创建一个新的空文件test cp /etc/profile /home/ # 复制系统文件/etc/profile到/home目录下 ls -l /home # 查看/home目录下文件的权限 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值