假设我有一个R函数,其中参数可以是几个预定义命名值(其中一个是默认值)或自定义字符向量之一.如何在不依赖魔术值名称或其他标志的情况下实现此目的?
#allow use of predefined subsets or pass their own list
bratPack<-function(members='CORE',...){
if (members=='CORE')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy')
else if (members=='ALL')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy','James Spader','Robert Downey, Jr.','Jon Cryer', 'John Cusack', 'Kevin Bacon', 'Jami Gertz', 'Mary Stuart Masterson', 'Matthew Broderick', 'Sean Penn', 'Kiefer Sutherland')
...
}
Run Code Online (Sandbox Code Playgroud) 在R中,很容易将矩阵转换为箱线图
> myMatrix
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 27 32 31 28 20 28 10 29 15 29
[2,] 31 33 20 28 21 9 14 21 34 33
[3,] 27 33 28 23 26 33 19 11 26 30
[4,] 33 17 10 31 10 32 10 29 31 28
[5,] 25 10 29 34 32 33 28 32 32 32
[6,] 32 19 13 32 26 20 9 26 32 33
[7,] …Run Code Online (Sandbox Code Playgroud) 我试图在几个列表上做联合(这些实际上是GRanges对象而不是整数列表,但原则是相同的),基本上是一个大联盟.
x<-sort(sample(1:20, 9))
y<-sort(sample(10:30, 9))
z<-sort(sample(20:40, 9))
mylists<-c("x","y","z")
emptyList<-list()
sapply(mylists,FUN=function(x){emptyList<-union(emptyList,get(x))})
Run Code Online (Sandbox Code Playgroud)
那只是返回列表内容.我需要相当于
union(x,union(y,z))
[1] 2 3 5 6 7 10 13 15 20 14 19 21 24 27 28 29 26 31 36 39
Run Code Online (Sandbox Code Playgroud)
但是以可扩展且非"可变的显式"形式编写
从在线条形图指南:
qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(gear))
Run Code Online (Sandbox Code Playgroud)
如何让5个位于底部,4个位于底部,3个位于顶部?
基本上我想要一个基于我的队列的自动增量id列 - 在这种情况下.(kmer,cvCut)
> myDataFrame
size kmer cvCut cumsum
1 8132 23 10 8132
10000 778 23 10 13789274
30000 324 23 10 23658740
50000 182 23 10 28534840
100000 65 23 10 33943283
200000 25 23 10 37954383
250000 584 23 12 16546507
300000 110 23 12 29435303
400000 28 23 12 34697860
600000 127 23 2 47124443
600001 127 23 2 47124570
Run Code Online (Sandbox Code Playgroud)
我想要添加一个列,其中包含基于kmer/cvCut组的新行名称
> myDataFrame
size kmer cvCut cumsum newID
1 8132 23 10 8132 1
10000 778 …Run Code Online (Sandbox Code Playgroud) 我似乎无法让eachLine跳过第一行,根据这个,有一个整数参数可以传递给eachLine,但我无法弄清楚语法
#doesn't work
new FileReader('myfile.txt').eachLine firstLine=2,{
line-> println line
}
#nope
new FileReader('myfile.txt').eachLine(2){
line-> println line
}
Run Code Online (Sandbox Code Playgroud) 作为这个问题的后续行动
下面是一些使用捕获编译和运行的代码.
val myString = "ACATCGTAGCTGCTAGCTG"
val nucCap = "([ACTG]+)".r
myString match {
case nucCap(myNuc) => println("dna:"+myNuc)
case _ => println("not dna")
}
>scala scalaTest.scala
dna:ACATCGTAGCTGCTAGCTG
Run Code Online (Sandbox Code Playgroud)
这是更简单的代码,没有捕获,不编译.
val myString = "ACATCGTAGCTGCTAGCTG"
val nuc = "[ACGT]+".r
myString match {
case nuc => println("dna")
case _ => println("not dna")
}
>scala scalaTest.scala
scalaTest.scala:7: error: unreachable code
Run Code Online (Sandbox Code Playgroud)
似乎匹配应该返回一个布尔值,无论是否使用捕获.这里发生了什么?
浏览Hadley Wickham的S4 wiki:https: //github.com/hadley/devtools/wiki/S4
setClass("Person", representation(name = "character", age = "numeric"),
prototype(name = NA_character_, age = NA_real_))
hadley <- new("Person", name = "Hadley")
Run Code Online (Sandbox Code Playgroud)
我们如何为Person设计构造函数(像这样)
Person<-function(name=NA,age=NA){
new("Person",name=name,age=age)
}
Run Code Online (Sandbox Code Playgroud)
不这样做:
> Person()
Error in validObject(.Object) :
invalid class "Person" object: 1: invalid object for slot "name" in class "Person": got class "logical", should be or extend class "character"
invalid class "Person" object: 2: invalid object for slot "age" in class "Person": got class "logical", should be or extend class "numeric"
Run Code Online (Sandbox Code Playgroud)