superdesolator 14.regexpr()与gregexpr()函数 这2个可能大家比较陌生点: > regexpr("uat","Equator") [1] 3 就是在后面的文中找前面的,返回第几个开始 > gregexpr("iss","Mississippi") [[1]] [1] 2 5 这个与上面的类似,但找所有的
superdesolator 15.传说中的正则表达式Regular Expressions! 记得几个星期之前,我非常羡慕和想学一个网页抓取数据技术中的用正则表达式整理数据的方法,当时大家都说用正则表达式,我却不知道是什么!现在新手们的福利来了: 前面介绍了grep()的用法了 > grep("[au]",c("Equator","North Pole","South Pole")) [1] 1 3 这里加了个[]表示找所有含a或者u! > grep("o.e",c("Equator","North Pole","South Pole")) [1] 2 3 这里加了个.表示o和e之间多了随便什么字母!2个点就是2个随便什么字母,如下: > grep("N..t",c("Equator","North Pole","South Pole")) [1] 2 如果我们想找.本身呢? > grep(".",c("abc","de","f.g")) [1] 1 2 3 这样不行,得这样: > grep("\\.",c("abc","de","f.g")) [1] 3
superdesolator testsuffix <- function(fn,suff) { parts <- strsplit(fn,"\\.") nparts <- length(parts[[1]]) return(parts[[1]][nparts] == suff) } > testsuffix("x.y.abc","abc") [1] TRUE 这里附上书中的一个例子一起学习学习! testsuffix <- function(fn,suff) { ncf <- nchar(fn) dotpos <- ncf - nchar(suff) + 1 return(substr(fn,dotpos,ncf)==suff) } 这个也同样的功能。 上面的几个知识点,其实都是针对string操作的,大家可以学学
ywh19860616 回复 第23楼 的 superdesolator: superdesolator,您列的这些函数都是比较常用的,非常受益。 ps:您现在用哪本教程? 话说这个网站对新手也非常好。http://www.mayin.org/ajayshah/KB/R/
superdesolator 16.sprintf()函数 大家都知道paste()函数的作用了: paste("q",i,".pdf",sep="") 现在我们也可以使用sprintf("q%d.pdf",i)有点像C语言!
superdesolator 17.locator()函数! > hist(c(12,5,13,25,16)) > locator(1) 看到这个函数我瞬间哭了!!多么好的一个命令啊! 在图上你只要点一次鼠标,它就会返回你点的位置!locator(2)可以点2个等等。。。。
superdesolator 18.ploygon()函数 f <- function(x) return(1-exp(-x)) curve(f,0,2) polygon(c(1.2,1.4,1.4,1.2),c(0,0,f(1.3),f(1.3)),col="gray") 这个命令还是蛮好的,指定任意多边形的背景色或者 polygon(c(1.2,1.4,1.4,1.2),c(0,0,f(1.3),f(1.3)),density=10)用横条去填充!
superdesolator 19.rev()函数 a=c(1,2) rev(a) 啥也不说了!这个的用处这里有一贴,在作对称图上! http://cos.name/cn/topic/109853?replies=6#post-244636
superdesolator 20.format格式的用法 这个东西我在实战中学到的,下面的例子只是结合了因子分析就有很大威力了,也许这个格式设置还有更多好用的地方: 看链接, http://cos.name/cn/topic/109861
superdesolator 21.sub()与gsub()函数 这个sub是只匹配到一个替换就结束了么?还是用gsub,如果针对1,222,333.12的数字,sub还可以么? 刚才实验下果然还是用gsub好: R>sub(',','','1,222,333.12') [1] "1222,333.12" R>gsub(',','','1,222,333.12') [1] "1222333.12" 主要就是替换的命令,当然还有其他方法,例如strsplit()函数,具体这些方法怎么被需求的,可以看下: http://cos.name/cn/topic/107273?replies=11#post-244845
superdesolator 22.readLines命令 没什么好说的,只需要提醒新手们,readlines不行!readLines才行!注意R区分大小写。。。 大家也可以看看这个问题,加深下学习: http://cos.name/cn/topic/109872?replies=6#post-244857
superdesolator 23.which与length函数结合 一些简单函数的组合使用,往往可以收到一些好的效果: http://cos.name/cn/topic/110092?replies=3#post-245787
superdesolator 25.as.Date()函数 我们会在数据分析中经常遇到时间日期的问题,这里有个帖子简单介绍了它的用法: http://cos.name/cn/topic/110123?replies=5#post-245908
yanlinlin82 回复 第9楼 的 Peter Chen:我一开始写代码的习惯就是运算符号两侧都加空格,而构造向量的冒号两侧不加空格,所以直观上比较容易理解“1:n - 1”会优先计算向量构造,然后才算减法。
superdesolator 26.strsplit(),paste0()函数 由于因子的方法对我们解决很多归类什么的问题非常有用而且高效,因此对因子格式的了解和熟悉就非常重要,这里贴出一个新手进阶贴,通过此帖应该可以激发大家的一些自定义设定因子完成自己所需的思路: http://cos.name/cn/topic/110133?replies=9#post-245986 主要思路是:通过裁剪变换然后粘贴回去,把因子的格式变成我们需要的。