R语言学习(4)--《R语言入门》
- 对象命名
必须是字母开头,区分大小写,后面可以有点. 下划线_ 数字; - 赋值
使用<-
或者->
; 可以赋值的有:数值,一个算式,一个函数的结果 - 函数ls()用于显示所有在内存中的对象;函数rm()删除对象,
删除对象x:rm(x)
删除所有对象:rm(list = ls())
找出含有字母m的对象,需要设定选项pattern
,如:ls(pattern = "m")
或者是简写ls(pat = "m")
ls.str()
会展示出内存中的所有对象的详细信息,这时会返回很多信息(太详细了),如果不需要这么详细,那么可以设定max.level选项(规定了对象信息的级别),具体地:ls.str(pat = "M", max.level = -1)
对象:
对象的属性:类型和长度。其中:
- 类型:数值型,字符型,复数型和逻辑型,使用
mode()
函数可以看到。 - 长度:对象中元素的个数,使用
length()
函数可以看到。
Inf
和 -Inf
表示正无穷和负无穷;NaN
表示非数字。
- 因子,是一个分类变量;
- 数组,是一个K维数据表;
- 矩阵,是一个二维数据表,数组和矩阵中的所有元素必须是同一类型的;
- 数据框,有一个或是几个向量和因子构成,必须是等长的,但可以是不同的数据类型;
- "ts"表示时间序列数据,包含额外属性,如频率和时间;
- 列表,可以包含任何类型的对象,包括列表。
读取数据文件:
读取文本文件(ASCII)中的数据,使用read.table () 或 scan 或 read.fwf
,这些基本的数据文件。
区别:
函数read.table()
:创建一个数据框,读取表格形式的数据。
> mydata <- read.table("test.dat")
> mydata
V1
1 a,b,c
2 3,2,3
> mydata <- read.table("test.dat", sep = ",")
> mydata
V1 V2 V3
1 a b c
2 3 2 3
>
注意:数据框中的每一个变量都将会被命名,如果没有规定名字,缺省值会被记为:V1,V2,…;
此外,还可以单独访问每个变量,如:mydata$V1,mydata$V2,…
或者mydata[“V1”],mydata[“V2”],…
或者mydata[,1], mydata[,2]
区别:第二种取出的结果是数据框,而第一种和第三种是向量。scan()
函数读取较为灵活,可以指定变量类型,还可以创建不同类型的对象,如果what
被缺省,那么将创建一个数值型向量。
> mydata <- scan("test.dat" , what = list(""))
Read 2 records
> mydata
[[1]]
[1] "a,b,c" "3,2,3"
#如果用 mydata <- scan("test.dat" , what = list("", 0 , 0))
#表示读取三个变量,第一个是字符型变量,第二个和第三个是数值型变量
read.fwf
函数可以用来读取文件种一些固定宽度的格式的数据,如:
> mydata <- read.fwf("test.dat", widths = c(1, 4, 3))
> mydata
V1 V2 V3
1 A 1.50 1.2
2 B 1.55 1.3
3 C 1.60 1.4
存储数据:
- 将对象x写入文件中:
> x = matrix(1:9 , 3 , 3)
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> write(x , file = "test.dat" , append = TRUE)
-
save.image()
或save(list = ls(all = TRUE) , file = ".RData")
生成数据:
#生成规则序列
> x <- 1:9
> x
[1] 1 2 3 4 5 6 7 8 9
> x <- 1:10-1
> x
[1] 0 1 2 3 4 5 6 7 8 9
> seq(1 , 5 ,1)
[1] 1 2 3 4 5
> seq(length = 1 , from = 1, to = 5)
[1] 1
> seq(length = 5 , from = 1, to = 5)
[1] 1 2 3 4 5
> seq(length = 10 , from = 1, to = 5)
[1] 1.000000 1.444444 1.888889 2.333333 2.777778
[6] 3.222222 3.666667 4.111111 4.555556 5.000000
> c(1,23,3,4)
[1] 1 23 3 4
> #通过键盘输入
> x <- scan()
1: 1 2 3 4
5:
Read 4 items
> x
[1] 1 2 3 4
> #使用rep函数创建所有元素相同的向量
> rep(2,5)
[1] 2 2 2 2 2
> #sequence()函数创建一系列连续的整数序列,每个序列都以给定的参数的数值结尾
> sequence(4:6)
[1] 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6
> sequence(c(4,6))
[1] 1 2 3 4 1 2 3 4 5 6
#gl(k,n,length = , labels = c())--共k个水平,每个水平重复n遍,直到凑够length个为之,其中labels是每个水平的名称
> gl(3,5, labels = c("a", "b" , "c"))
[1] a a a a a b b b b b c c c c c
Levels: a b c
> gl(3,5, labels = c("a", "b" , "c"), length = 20)
[1] a a a a a b b b b b c c c c c a a a a a
Levels: a b c
#使用expand.grid()创建数据框,完全搭配出各参数的各水平
> expand.grid(a = c(1,2) , b = c(10, 20) , sex = c("E", "F"))
a b sex
1 1 10 E
2 2 10 E
3 1 20 E
4 2 20 E
5 1 10 F
6 2 10 F
7 1 20 F
8 2 20 F
- 产生随机数据:
基本形式:rfunc(n,p1,p2,…)表示某分布func的随机数r,需要生成n个,决定该分布函数的的参数值为p1,p2,…
与之相同地,有密度函数(dfunc),累计概率密度函数,也就是分布函数(pfunc),分位数函数(qfunc(p,…)其中0<p<1)
最后两个函数序列可以用来求统计检验中的P值或临界值。
使用对象:
- 向量有两个参数:类型,长度。
不同类型有各自的缺省值,比如:逻辑型默认是FALSE,字符型默认是“”,数值型默认是0.
> x = vector(mode = "logical" , length = 3)
> x
[1] FALSE FALSE FALSE
> x = vector(mode = "numeric" , length = 2)
> x
[1] 0 0
> x = vector(mode = "character" , length = 3)
> x
[1] "" "" ""
- 因子,不仅包括分类变量本身,还包括变量不同的可能水平。
格式:
factor(x , levels = sort(unique(x), na.last = TRUE),labels =levels , exclude = NA,orderd = is.ordered(x))
其中levels用来指定因子可能的水平,缺省值是向量x中的互异值;
labels用来指定水平的名字;
exclude表示从向量x中剔除的水平值;
ordered 是一个逻辑性选项用来指定因子的水平是否有次序。
factor(1:3)
[1] 1 2 3
Levels: 1 2 3
factor(1:3 , levels = 1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
factor(1:3 , labels = c(“a”,“D”,“C”))
[1] a D C
Levels: a D C
factor(1:5 , exclude = 4)
[1] 1 2 3 5
Levels: 1 2 3 5
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200120180254274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDQ4NDkx,size_16,color_FFFFFF,t_70)
上一篇: 丰收的季节,欢颜笑语的幸福时刻。
下一篇: 运动场上的精彩一幕一幕。