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

posted @ 2014-05-20 16:49  JamesFan  阅读(5853)  评论(0编辑  收藏  举报