找回密码
 注册
查看: 5582|回复: 0

R语言中如何产生有规律的数据,比如整数列

[复制链接]
发表于 2011-1-22 18:02:53 | 显示全部楼层 |阅读模式
本帖最后由 xiaoliu 于 2011-1-22 18:03 编辑

例如一个从1到30的规则整数序列,可以这样产生:
> x <- 1:30
这个结果向量x有30个元素。算子`:'的优先级可从如下表达式中看出:
> 1:10-1
[1] 0 1 2 3 4 5 6 7 8 9
> 1:(10-1)
[1] 1 2 3 4 5 6 7 8 9
函数seq可以生成如下的实数序列:
> seq(1, 5, 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
其中第一个数字表示序列的起点,第二个表示终点,第三个是生成序列的步
长。也可以这样使用:
> seq(length=9, from=1, to=5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
还可以用函数c直接输入数值:
> c(1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
如果想用键盘输入一些数据也是可以的,只需要直接使用默认选项
的scan函数:
> z <- scan()
1: 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
10:
Read 9 items
> z
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
函数rep用来创建一个所有元素都相同的向量:
> rep(1, 30)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
函数sequence创建一系列连续的整数序列,每个序列都以给定参数的数
值结尾:
> sequence(4:5)
[1] 1 2 3 4 1 2 3 4 5
> sequence(c(10,5))
[1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5
函数gl(生成不同的水平/层次数据)十分有用,因为它能产生规则的因
子序列。这个函数的用法是gl(k,n),其中k是水平数(或类别数),n是
每个水平重复的次数。此函数有两个选项:length用来指定产生数据的个
数,labels用来指定每个水平因子的名字。例如:
> gl(3, 5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(3, 5, length=30)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(2, 6, label=c("Male", "Female"))
[1] Male Male Male Male Male Male
[7] Female Female Female Female Female Female
Levels: Male Female
> gl(2, 10)
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
Levels: 1 2
> gl(2, 1, length=20)
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Levels: 1 2
> gl(2, 2, length=20)
[1] 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
Levels: 1 2
最后,expand.grid()创建一个数据框,结果是把各参数的各水平完全
搭配:
> expand.grid(h=c(60,80), w=c(100, 300), sex=c("Male", "Female"))
h w sex
1 60 100 Male
2 80 100 Male
3 60 300 Male
4 80 300 Male
5 60 100 Female
6 80 100 Female
7 60 300 Female
8 80 300 Female
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 22:38 , Processed in 0.020243 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表