所以我有这个程序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) 我有一个包含许多列的data.frame.我想保留其中4列中没有NA的行.复杂性源于这样一个事实:我有其他行允许在其中有NA,所以我不能使用complete.cases或is.na. 最有效的方法是什么?
我将data.frame传递给xtable
dat.table <- xtable(dat[1:20,] ,digits=10)
Run Code Online (Sandbox Code Playgroud)
我宁愿使用科学记数法,而不是显示这样的数字.我该怎么办?
看了一眼,但我找到的只是R:格式化xtable中的数字,这似乎不是答案.
我有一个要在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值.
我知道如何在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)解决方案更容易,那么如果简单>将它发送给文件也很酷.
谢谢!
我有一个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闪亮,并有一个问题.
我想创建一个多标签多数据集包.由于不同的数据集不是过度相关,我希望用户能够选择他们想要查看的内容,并为此更改可供他们使用的过滤选项.
所以我想要这样的东西,
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条件一样处理它似乎不起作用.
这是我第一次尝试此操作,因此如果我弄错了术语,我们深表歉意。我正在使用一个软件包(生物导体上的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中的消息(“它还活着!”)。
所以,如果我有一个看起来像这样的数据框:
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) 目前,我的代码最初让用户选择他们想要的数据集(选择两个).然后根据他们选择的内容,出现数据集各自子集的其他绘图变量.这样做很好,除了我希望这些图在一个图上覆盖所有图,而不是默认情况下单独出现.
我有一个默认的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)图中?
我有一个文件列表(不是由我制作),由于某些原因,所有文件都标记为".csv",即使有些是csv,有些是制表符分隔的.因此,当我尝试在R中读取它们时,我必须手动指定分隔符.除非有人知道在我收到错误的文件之前是否有办法检查这个.
所以我知道这听起来很简单,因为我敢肯定。我知道当您要移动文件时,可以在linux终端中使用cp或mv从一个目录移动到另一个目录。我的问题是,当您要将文件从本地计算机移至群集时该如何处理。
要访问群集,我将其放入ssh并在其中有一个目录。香港专业教育学院尝试了绝对的文件路径,但这显然行不通。
我写了一个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中扩展?