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)]