Monday, September 17, 2012

R Matrix

1.matrics是一种以列优先为顺序(column-major order),包含行与列两个特性的特殊vector,表示为matrix(行数,列数)

2.创建matrix的方式 1) y<-matrix(c(1,2,3,4),nrow=2,ncol=2) 2) y<-matrix(nrow=2,ncol=2); y[1,1]<-1…. 3) m<-matrix(c(1,2,3,4,5,6),nrow=2,byrow=T) 通过byrow参数来“行优先”输入 

3.线性代数 1) %*% 矩阵相乘(条件:左侧矩阵的列数=右侧矩阵的行数) 

4.取子矩阵的几种方式 1) 连续取 z[,2:3]:取z矩阵2、3两列 2) 跳跃取 z[c(1,3),]:取z矩阵1、3两行 3) 剔除取 z[-2,]:剔除z矩阵第2行 

5.矩阵的过滤和元组过滤类似,也可以对[]内写表达式,表达式中可以包含&(AND);鉴于矩阵是特殊的元组,也可以对矩阵使用which来取出满足条件的元素其下标 

6.apply()方法可以把自定义的function,应用到matrix中的元素上。如果自定义function返回k个元素的vector,那么apply()的结果将包含k行。 

7.通过cbind()和rbind()合并两个vector(matrix)——实际上,所谓“合并”,只是创建了一个新的matrix 

8.对vector调用class方法,其结果由vector中包含的数据类型决定,如class(c(1,2,3))为numeric,而class(c(‘a’,'b’))为character;而matrix的class永远是matrix 

9.从matrix中提取一行或列,被提取的部分会自动成为vector,而不再是matrix。在进行提取的时候,需要指定drop参数为FALSE来保证最终还是matrix。如r<-z[2,, drop=FALSE]。抑或利用as.matrix()方法将被提取的结果改变为matrix 

10.array为matrix提供了额外的维度,使得matrix由二元变为三元。如test<-array(data=c(firstMatrix,secondMatrix),dim=c(rownumber,columnnumber,2))。dim参数决定了合并的matrix数量。而array的合并可以实现更高维度的matrix。

Monday, September 10, 2012

How to batch rename files

for i in *; do j=`echo $i | cut -d . -f 1`; j=$j"_32.png"; mv $i $j; done Basically, this says "for every file in the folder, cut the filename on all dots and take the first result into variable 'j'. Then append '_32.png' onto the end of the variable. Finally move the original file to the new filename". (http://www.thingy-ma-jig.co.uk/comment/7855) example: