我很想知道R是否可以使用它的eval()
功能来执行例如字符串提供的计算.
这是一个常见的情况:
eval("5+5")
Run Code Online (Sandbox Code Playgroud)
但是,而不是10我得到:
[1] "5+5"
Run Code Online (Sandbox Code Playgroud)
有解决方案吗
我有一个巨大的制表符分隔文件格式如下
X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
Run Code Online (Sandbox Code Playgroud)
我想仅使用bash命令以有效的方式转置它(我可以编写十个左右的Perl脚本来执行此操作,但执行速度应该比本机bash函数慢).所以输出应该是这样的
X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11
Run Code Online (Sandbox Code Playgroud)
我想到了这样的解决方案
cols=`head -n 1 input | wc -w`
for (( i=1; i <= $cols; i++))
do cut -f $i input | tr $'\n' $'\t' | sed -e "s/\t$/\n/g" >> output
done
Run Code Online (Sandbox Code Playgroud)
但它很慢,似乎不是最有效的解决方案.我在这篇文章中看到了vi的解决方案,但它仍然过慢.有什么想法/建议/精彩的想法吗?:-)
我正在尝试读取具有不同行长度的文本文件:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我在read.table中使用了参数fill = TRUE,所以:
data<-read.table("test",sep="\t",fill=TRUE)
Run Code Online (Sandbox Code Playgroud)
不幸的是,为了评估最大行长度,read.table只读取文件的前5行,并生成一个如下所示的对象:
data
V1 V2 V3 V4 V5
1 1 NA NA NA NA
2 1 2 NA NA NA
3 1 2 3 NA NA
4 1 2 3 4 NA
5 1 2 3 4 5
6 1 …
Run Code Online (Sandbox Code Playgroud) 对不起,这可能是一个微不足道的问题.
我使用unix join命令进行了一些操作,试图将标签而不是空格作为默认分隔符.-t是参数,但这些不起作用(ubuntu 9.10 64 bit 2.6.31-14,GNU coreutils 7.4版)
join file1 file2 -t"\t"
join file1 file2 -t="\t"
join file1 file2 -t="\\t"
join file1 file2 -t $"\t"
Run Code Online (Sandbox Code Playgroud)
等等.当然,我总是可以使用一些不太优雅的解决方案
join file1 file2 > output
sed "s/ /\t/g" output
Run Code Online (Sandbox Code Playgroud)
但我想看起来很聪明:-)而且,如果有一个-t参数,它必须有效.
一位前同事给我们留下了数千行代码.这更像是一种好奇心,因为我用不那么晦涩的语言重写了他所做的一切:-)
不过我很好奇.这是元代码还是实际语言?
DATA DIVISION.
WORKING-STORAGE SECTION.
78 dialog-system VALUE "DIV".
01 Display-Error.
03 Display-Error-No PIC 9(4) comp-5.
03 Display-Details-1 PIC 9(4) comp-5.
03 Display-Details-2 PIC 9(4) comp-5.
05 Display-Details-3 PIC 9(4) comp-5.
COPY "DS-CNTRL.MF".
COPY "ThisApp.txt".
PROCEDURE DIVISION.
*---------------------------------------------------------------*
Main-Process SECTION.
PERFORM Program-Initialize
PERFORM Program-Body UNTIL EXIT-FLAG-TRUE
PERFORM Program-Terminate
.
*---------------------------------------------------------------*
Program-Initialize SECTION.
INITIALIZE Ds-Control-Block
INITIALIZE Data-block
MOVE Data-block-version-no
TO Ds-Data-Block-Version-No
MOVE Version-no TO Ds-Version-No
MOVE Ds-New-Set TO Ds-Control
MOVE "MyApp" TO Ds-Set-Name
.
*---------------------------------------------------------------*
Program-Body SECTION.
PERFORM Call-Dialog-System
. …
Run Code Online (Sandbox Code Playgroud) 我很想知道是否有任何生物信息学工具能够处理multiFASTA文件,给我信息序列,长度,核苷酸/氨基酸含量等信息,并可能自动绘制描述性图.也可以使用R BIoconductor解决方案或BioPerl模块,但我找不到任何东西.
你能帮助我吗?非常感谢 :-)
我有一个关于R的超短问题
我的目标是为使用par生成的多面板图指定一个共同的标题,例如
par(mfrow=c(1,2))
plot(rnorm(1000))
plot(rnorm(1000))
Run Code Online (Sandbox Code Playgroud)
因此,类似于绘图功能的"主要",但扩展到两个图.有没有规范的方法来做到这一点?
谢谢你的回答:-)
我正在寻找一个高效的Java库(甚至是一个函数)来执行臭名昭着的精确二项式测试.类似于此处描述的R函数"binom.test" .
你能帮助我吗?非常感谢!:-)
我正在尝试编写一个具有多线程功能的 CRAN 包。我使用 实现了一个完美的解决方案doSNOW
,但该软件包已被 CRAN 团队标记为“已取代”,他们要求我切换到一个doParallel
解决方案。这很好,但是我找不到一种方法来监视已完成的作业数量,doParallel
就像我使用doSNOW
. 这是我的doSNOW
解决方案:
# Set up parameters
nthreads<-2
nreps<-100
funrep<-function(i){
Sys.sleep(0.1)
res<-c(log2(i),log10(i))
return(res)
}
# doSNOW solution
library(doSNOW)
cl<-makeCluster(nthreads)
registerDoSNOW(cl)
pb<-txtProgressBar(0,nreps,style=3)
progress<-function(n){
setTxtProgressBar(pb,n)
}
opts<-list(progress=progress)
i<-0
output<-foreach(i=icount(nreps),.combine=c,.options.snow=opts) %dopar% {
s<-funrep(i)
return(s)
}
close(pb)
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
这是之前 Stack Overflow 帖子中建议的 doParallel 解决方案。但是,如您所见,它不会在作业完成时打印进度,它只会在最后合并结果时打印。
# doParallel solution
library(doParallel)
progcombine<-function(){
count<-0
function(...) {
count<<-count+length(list(...))
setTxtProgressBar(pb,count)
utils::flush.console()
c(...)
}
}
cl <- makeCluster(nthreads)
registerDoParallel(cl)
output<-foreach(i = icount(nreps),.combine=progcombine()) %dopar% {
funrep(i) …
Run Code Online (Sandbox Code Playgroud)