我注意到很多[R黑客做這樣的事情:R中這個向量的「重複」行爲是否有名字?
> matrix(c(1,2,3,4,5),nrow=5,ncol=10,byrow=FALSE)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 1 1 1 1 1 1 1 1 1
[2,] 2 2 2 2 2 2 2 2 2 2
[3,] 3 3 3 3 3 3 3 3 3 3
[4,] 4 4 4 4 4 4 4 4 4 4
[5,] 5 5 5 5 5 5 5 5 5 5
基本上,如果一個向量的大小(在這種情況下5)比「容器」的尺寸較短,它是把進入,在這種情況下,一個矩陣(大小爲5 x 10 = 50),它會重複自己,直到它填充容器。我認爲這是R的絕對簡潔功能,這使得很多R代碼非常簡潔。 有沒有這個名字?並有關於此的文檔?
我注意到這個模式來自(http://training.bioinformatics.ucdavis.edu/docs/2012/05/DAV/lectures/gene-expression-analysis/gene-expression-analysis.pdf)下面的代碼片段。功能基本上採用數據矩陣,並且執行quantile normalization
quan.norm<-function(x,quan=0.5){
##x: p by n data matrix, where columns are the samples.
norm<-x
p<-nrow(x)
n<-ncol(x)
x.sort<-apply(x, 2, sort) ## sort genes within a sample
x.rank<-apply(x,2,rank) ## rank genes within a sample
## find the common distribution to be matched to:
qant.sort<-matrix(apply(x.sort,1,quantile, probs=quan),
+ p,n,byrow=FALSE) #***<----- HERE ***
## match each sample to the common distribution:
for (i in 1:n){
norm[,i]<-qant.sort[x.rank[,i],i]
}
return(norm)
}
我在註釋添加*,看看這種模式發生。我很驚訝於相關算法的執行的簡潔性
其所謂的回收利用。 –
...... R稱之爲[回收](http://cran.r-project.org/doc/manuals/R-intro.html#The-recycling-rule),有些人認爲它很重要。 –
...但我們不是那種。 –