• R语言
  • 发个学习贴,新手可以进来看看一些问题的理解

14.regexpr()与gregexpr()函数

这2个可能大家比较陌生点:

> regexpr("uat","Equator")

[1] 3

就是在后面的文中找前面的,返回第几个开始

> gregexpr("iss","Mississippi")

[[1]]

[1] 2 5

这个与上面的类似,但找所有的

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

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操作的,大家可以学学

回复 第23楼 的 superdesolator:

superdesolator,您列的这些函数都是比较常用的,非常受益。

ps:您现在用哪本教程?

话说这个网站对新手也非常好。http://www.mayin.org/ajayshah/KB/R/

16.sprintf()函数

大家都知道paste()函数的作用了:

paste("q",i,".pdf",sep="")

现在我们也可以使用sprintf("q%d.pdf",i)有点像C语言!

17.locator()函数!

> hist(c(12,5,13,25,16))

> locator(1)

看到这个函数我瞬间哭了!!多么好的一个命令啊!

在图上你只要点一次鼠标,它就会返回你点的位置!locator(2)可以点2个等等。。。。

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)用横条去填充!

19.rev()函数

a=c(1,2)

rev(a)

啥也不说了!这个的用处这里有一贴,在作对称图上!

http://cos.name/cn/topic/109853?replies=6#post-244636

回复 第24楼 的 ywh19860616:

R语言艺术!《The art of R Programming》我写的学习贴全来自这本书

PS:几乎全来自。。。

20.format格式的用法

这个东西我在实战中学到的,下面的例子只是结合了因子分析就有很大威力了,也许这个格式设置还有更多好用的地方:

看链接,

http://cos.name/cn/topic/109861

我仅代表自己感谢一下不嫌弃新手的人,能把复杂的东西简单详细讲出来的人,以后定是人品好的实力强的高手!谢谢分享!

回复 第31楼 的 20121024:谢谢支持,大家都奔跑在通往大神的路上吧!

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

22.readLines命令

没什么好说的,只需要提醒新手们,readlines不行!readLines才行!注意R区分大小写。。。

大家也可以看看这个问题,加深下学习:

http://cos.name/cn/topic/109872?replies=6#post-244857

17 天 后

23.which与length函数结合

一些简单函数的组合使用,往往可以收到一些好的效果:

http://cos.name/cn/topic/110092?replies=3#post-245787

24.factor函数用于矩阵数据类型的转换

http://cos.name/cn/topic/110095?replies=11#post-245885

25.as.Date()函数

我们会在数据分析中经常遇到时间日期的问题,这里有个帖子简单介绍了它的用法:

http://cos.name/cn/topic/110123?replies=5#post-245908

回复 第9楼 的 Peter Chen:我一开始写代码的习惯就是运算符号两侧都加空格,而构造向量的冒号两侧不加空格,所以直观上比较容易理解“1:n - 1”会优先计算向量构造,然后才算减法。

26.strsplit(),paste0()函数

由于因子的方法对我们解决很多归类什么的问题非常有用而且高效,因此对因子格式的了解和熟悉就非常重要,这里贴出一个新手进阶贴,通过此帖应该可以激发大家的一些自定义设定因子完成自己所需的思路:

http://cos.name/cn/topic/110133?replies=9#post-245986

主要思路是:通过裁剪变换然后粘贴回去,把因子的格式变成我们需要的。