R语言系列:生成数据

生成规则数据

1、使用“:“,如x=1:10,注意该方法既可以递增也可以递减,如y=10:1

2、seq,有两种用法:①seq(起点,终点,步长); ②seq(length=9, from=1, to=5)

seq还有一种简写:seq(x) #相当于1:length(x),但当length(x)为0时,返回integer(0)

3、c(1,2,8)

4、使用scan(),可以等待键盘输入。输入过程中,可以使用空格分隔每个元素,也可以一行输入一个元素。输入完毕只需键入一个空行即可。

5、rep(x,n) #将x重复n次,可使用each限定为依次重复形式

rep(1:3,3)

rep(1:3,each=3)

6、sequence(4,9)构造一个包含1:4和1:9共13个元素的向量

7、gl(k,n,length=,label=)构造一个因子序列。k为水平数,n为每个水平连续出现的次数,length为整个序列的长度,label为因子标签。

举例:gl(3,5,length=20,label=c('a','b','c'))

8、expand.grid(a=1:3,b=1:4,c=c('x','y','z'))构造一个数据框,将各参数的各水平完全搭配。

9、paste:该函数每次从每个参数中提取一个元素组成一个字符串,直至元素最多的参数取完,其它元素不足的参数循环补足。 可接受多个参数,每个参数可包括多个元素。例:paste(c("X","Y"), 1:10, sep="")

10、combn(x, n) #生成x中取n个元素的所有组合

常用随机数字

runif(n,min=0,max=1) #uniform,均匀分布

rnorm(n,mean=0,sd=1) #Gaussian(normal),正态分布

rexp(n,rate=1) #exponential,指数分布

rlnorm(n,meanlog=0,sdlog=1) #lognormal,对数正态分布

随机抽样

sample(x, n, replace=FALSE, prob=)

sample(10) #随机排列1:10,默认不重复抽样

sample(10, 5) #从1:10中随机抽5个,不重复抽样

x=10:20; sample(x); #随机排列x

sample(10, replace=TRUE) #从1:10中随机抽10次,允许重复抽样

sample(0:1, 100, replace=TRUE) #100次伯努利试验

sample(c(0,1), 10, replace=TRUE, prob=c(0.1, 0.9)) #分别以0.1和0.9的概率抽取0和1

字符切割

strsplit(x, split, fixed = FALSE, perl = FALSE)

#根据split将x分割,若split=“”,则将x分为单个字符。

#默认split为正则表达式,可使用fixed=TRUE,对split做精确匹配

#当perl=TRUE时,使用perl的正则表达式规则

#当分隔符为?, +, {, |, (, )时,要使用'\\'来消除特殊含义

字符连接

paste(letters,collapse='') #将26个小写字母连成一个字符串

#使用collapse指定的连接符,连接paste的结果为一个字符串

#鉴别以下几种情况

paste(letters[1:5]) #不能连接,输出5个字母:"a" "b" "c" "d" "e"

paste("a", "b", "c", "d", "e", sep='') #输出"abcde",注意和前者的差别

paste(1:3,4:6,collapse='-') #输出"1 4-2 5-3 6"

paste(1:3,4:6,sep='',collapse='-') #输出"14-25-36"

paste(c(1:3,4:6),collapse='-') #输出"1-2-3-4-5-6"

R语言中的内嵌常量

LETTERS #26个大写字母

letters #26个小写字母

month.abb #12个月份的三字母缩写

month.name #12个月份的全称

pi #3.14...

字母和月份可以取部分子集,例:letters[c(1:8)]