小编cia*_*ius的帖子

从R脚本运行bash脚本

所以我有这个程序samtools我想从cmd行使用,将一个文件转换为另一个文件.它的工作原理如下:

bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta
Run Code Online (Sandbox Code Playgroud)

因为我想自动化这个,我想通过使用R脚本自动化它.我知道你可以使用system()来运行操作系统命令,但是我无法通过尝试来实现它

system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)
Run Code Online (Sandbox Code Playgroud)

是否只是使用正则表达式来摆脱空格和东西,所以逗号参数系统(命令)是可读的?我该怎么做呢?

编辑:

system("samtools view filename.bam | awk'{OFS ="\ t"; print">"$ 1"\n"$ 10}" - > first_batch_1.fasta")错误:"system("samtools view filename)中的意外输入.bam | awk'{OFS ="\"

EDIT2:

system("samtools view filename.bam | awk'{OFS = \"\ t \"; print \"> \"$ 1 \"\n \"$ 10}' - > filename.fasta")

awk: cmd. line:1: {OFS="    "; print ">"$1"
awk: cmd. line:1:                         ^ unterminated string
awk: cmd. …
Run Code Online (Sandbox Code Playgroud)

bash r

15
推荐指数
1
解决办法
2万
查看次数

删除某些列R中包含NA的行

我有一个包含许多列的data.frame.我想保留其中4列中没有NA的行.复杂性源于这样一个事实:我有其他行允许在其中有NA,所以我不能使用complete.cases或is.na. 最有效的方法是什么?

r dataframe

12
推荐指数
1
解决办法
1万
查看次数

在R中使用带有xtable的科学记数法

我将data.frame传递给xtable

 dat.table <- xtable(dat[1:20,] ,digits=10)
Run Code Online (Sandbox Code Playgroud)

我宁愿使用科学记数法,而不是显示这样的数字.我该怎么办?

看了一眼,但我找到的只是R:格式化xtable的数字,这似乎不是答案.

r

11
推荐指数
2
解决办法
3437
查看次数

在R中的光谱上绘制着色点

我有一个要在R中的图表上播放的点列表.为了获得3个级别的信息(X轴,Y轴和另一个),我想在图表上绘制点并在比例上着色它们对于第三个变量.我想要显示的每个点的百分比值为第三个变量(Z).因此,如果A的Z值为0.95,我希望它是一个鲜红色,但由于B只有Z = 0.65,我希望它暗红色朝向蓝色.值从NA(我认为应该是蓝色)到0.99(亮红色).

样本数据:

1   1   0.02937715
2   1   0.05872889
3   1   0.08802983
4   1   0.11725462
5   1   0.14637799
6   1   0.17537475
7   1   0.20421981
8   1   0.23288821
9   1   0.26135518
10  1   0.28959607
Run Code Online (Sandbox Code Playgroud)

第三列给出Z值.

plot r colors

9
推荐指数
1
解决办法
1949
查看次数

按设定量增加bash循环

我知道如何在bash中做一个每次增加1的循环,但是说我有一个范围1到773并且我想从循环输出一个范围,这样我在每次迭代中得到两个变量.第一个将是1,第二个将是19.在第二次迭代中,第一个将是20,第二个是39.

我一直在玩类似的东西:

for start in {1..773}
do    
start=$(($start+20))
end=$(($start+20))
echo $start ## 
echo $end
done
Run Code Online (Sandbox Code Playgroud)

期望的循环结果:

 1. $start = 1 and $end = 19
 2. $start = 20 and $end = 39
 3. $start = 40 and $end = 59 
etc
Run Code Online (Sandbox Code Playgroud)

但这不对.我想将这两个变量输出到一系列脚本中以使R运行得更快,所以如果非bash(例如awk)解决方案更容易,那么如果简单>将它发送给文件也很酷.

谢谢!

bash

7
推荐指数
7
解决办法
5万
查看次数

基于一列重新编码数据帧

我有一个5845*1095(行*列)数据框,如下所示:

 9  286593   C     C/C     C/A     A/A
 9  334337   A     A/A     G/A     A/A
 9  390512   C     C/C     C/C     C/C

c <-  c("9", "286593", "C", "C/C", "C/A", "A/A") 
d <-  c("9", "334337", "A", "A/A", "G/A", "A/A")
e <-   c("9", "390512", "C", "C/C", "C/C", "C/C")
dat <- data.frame(rbind(c,d,e))
Run Code Online (Sandbox Code Playgroud)

我希望第三列中的值用于将列更改为右侧,因此如果(每行1)列3为"C",则第4列从"C/C"变为"0",因为它具有同一封信.一个字母匹配为"1"(可以是第一个或第二个字母),字母匹配不是"2".

9 286593  C  0  1  2
9 334337  A  0  1  0
9 390512  C  0  0  0 

c <-  c("9", "286593", "C", "0", "1", "2") 
d <-  c("9", "334337", "A", "0", " …
Run Code Online (Sandbox Code Playgroud)

r dataframe

6
推荐指数
1
解决办法
287
查看次数

R工作室闪亮的条件陈述

我一直在玩R闪亮,并有一个问题.

我想创建一个多标签多数据集包.由于不同的数据集不是过度相关,我希望用户能够选择他们想要查看的内容,并为此更改可供他们使用的过滤选项.

所以我想要这样的东西,

selectInput("variable", "Variable:",
list(""Cylinders" = "cyl",
"Transmission" = "am"),

if (selectInput == "Transmission") {
    sliderInput("integer", "Integer:", 
    min=0, max=1, value=0) },

else{

 sliderInput("decimal", "Decimal:", 
             min = 0, max = 1, value = 1) }
Run Code Online (Sandbox Code Playgroud)

我如何在Shiny中做一个有条件的?像普通的R条件一样处理它似乎不起作用.

r shiny

5
推荐指数
1
解决办法
7522
查看次数

修改包装功能

这是我第一次尝试此操作,因此如果我弄错了术语,我们深表歉意。我正在使用一个软件包(生物导体上的snapCGH)。我调用了一个函数plotSegmentedGenome,该函数又调用了基因组图。这两个函数都在snapCGH命名空间中:

> environment(plotSegmentedGenome)
<environment: namespace:snapCGH>
> environment(genomePlot)
<environment: namespace:snapCGH>
Run Code Online (Sandbox Code Playgroud)

我想修改基因组图。我的第一次尝试是简单地运行

> genomePlot
Run Code Online (Sandbox Code Playgroud)

因此,我可以获取代码并从中创建一个新函数。我想更改两件小事。它以mb为单位标记x轴,而Id则以bp为单位标记(因此要乘以标签,但所绘制的值将不乘以1000000)。其次,它用令人讨厌的红色染色体标记了x轴。我想完全删除该标签。将此尝试另存为基因组图.R并获得了它。

如果然后运行plotSegmentedGenome,则没有任何变化。因此,我认为它仍在其命名空间中使用基因组绘图功能。如果在全局环境中创建自己的plotSegmentedGenome副本,则会收到错误“错误:找不到对象'chrominfo.Mb'”。这是plotSegmentedGenome的参数之一,我想是在环境中创建的。

我希望这是有道理的,并且有一个解决方案并不容易:)

ps:我在http://www.r-bloggers.com/environments-in-r/上阅读了此内容,虽然很有趣,但不够详尽,无法让我找出解决方法。如果我能写

snapCGH$genomePlot <- customGenomePlot
or 
snapCGH:::genomePlot <- customGenomePlot
Run Code Online (Sandbox Code Playgroud)

更新:基于包函数内的重定向/拦截函数调用

我试过了

 library(proto)
  plotSegmentedGenome <- with(proto(environment( plotSegmentedGenome),  plotSegmentedGenome = snapCGH:: plotSegmentedGenome, genomePlot = genomePlot), my_genomePlot)
Run Code Online (Sandbox Code Playgroud)

但是我仍然收到错误

 Error in plotSegmentedGenome(SegInfo.Hom.runDNAcopy, array = array, chrom.to.plot = 19,  : 
   object 'chrominfo.Mb' not found
  > 
Run Code Online (Sandbox Code Playgroud)

它至少正在调用该函数的版本,因为它会打印我卡在my_genomePlot中的消息(“它还活着!”)。

r

5
推荐指数
2
解决办法
2390
查看次数

检索R中特定单元格的行和列名称

所以,如果我有一个看起来像这样的数据框:

             A     B      C  
  rowname1   4.5   4      3.2
  rowname2   3     23     9
Run Code Online (Sandbox Code Playgroud)

如何让R给我包含特定数字的行/列的名称?

即如果我给出值3,它会回馈

 rowname2,A
Run Code Online (Sandbox Code Playgroud)

r dataframe

4
推荐指数
1
解决办法
2万
查看次数

一个R Shiny问题 - 在一个图上绘制多条线

目前,我的代码最初让用户选择他们想要的数据集(选择两个).然后根据他们选择的内容,出现数据集各自子集的其他绘图变量.这样做很好,除了我希望这些图在一个图上覆盖所有图,而不是默认情况下单独出现.

我有一个默认的plot plot,plot_sotal,数据集中的其他选项正在查看它的特定子集.因此,只有一个分散是有意义的.

 output$plot_Total <- reactivePlot(function() { 
  plot.new()
   plot.window(xlim=c(1850,2020), ylim = c(0,5000000))
   axis(1)
   axis(2)
   title(main="Numbers over the years")
   title(xlab="Year")
   title(ylab="Number of people")
   box()
   points(dat$Year, dat$Total, col="red")
   lines(dat$Year, dat$Total, col="red")
   })

 output$plot_subset1 <- reactivePlot(function() { lines(dat$Year, dat$subset1) })
 output$plot_subset2 <- reactivePlot(function() { lines(dat$Year, dat$subset2) })
Run Code Online (Sandbox Code Playgroud)

为什么这段代码不起作用?它只为每个(不需要的)图形创建空白区域,在其下面显示"错误:plot.new尚未被调用".如何指定将这些行添加到默认(plot_Total)图中?

r shiny

4
推荐指数
1
解决办法
5698
查看次数

在读入R之前检查文件是如何分隔的

我有一个文件列表(不是由我制作),由于某些原因,所有文件都标记为".csv",即使有些是csv,有些是制表符分隔的.因此,当我尝试在R中读取它们时,我必须手动指定分隔符.除非有人知道在我收到错误的文件之前是否有办法检查这个.

import r

4
推荐指数
2
解决办法
140
查看次数

将文件从本地计算机移动到群集

所以我知道这听起来很简单,因为我敢肯定。我知道当您要移动文件时,可以在linux终端中使用cp或mv从一个目录移动到另一个目录。我的问题是,当您要将文件从本地计算机移至群集时该如何处理。

要访问群集,我将其放入ssh并在其中有一个目录。香港专业教育学院尝试了绝对的文件路径,但这显然行不通。

linux

2
推荐指数
1
解决办法
8493
查看次数

bash变量周围有两层引号

我写了一个bash脚本,它创建了一系列R脚本.但是,我很难引用一个bash变量来回显R脚本作为要读入R的文件.我有

echo "loadings_file <- $loadings ; calls_file <- $file" | cat - template.R > temp && mv temp $scriptname
Run Code Online (Sandbox Code Playgroud)

$ loadings和$ file是我想让R读入的文件.但是当我按原样运行它们时,它们最终会出现在R脚本中而没有引号,因此将它们作为字符串处理.我如何确保它们在R中被引用但仍然首先在bash中扩展?

bash r

1
推荐指数
1
解决办法
103
查看次数

标签 统计

r ×11

bash ×3

dataframe ×3

shiny ×2

colors ×1

import ×1

linux ×1

plot ×1