R语言自学笔记2 —— 数据的创建和修改1

R语言的数据结构parts 1

 

R主要的对象类型为 : 标量、向量、矩阵、数组、数据框和列表

 

 

2.1 向量以及运算

 

对于向量 可以 储存 数值型、字符型、逻辑型 的一堆数组 ,执行的函数为 c()

 

注意 : 单个向量只能拥有相同的类型,无法混杂。

 

同一个向量内的字符可以同时进行加减乘除进行运算 ,如:

 

> c(2,3,4,5,6)-2

[1] 0 1 2 3 4

 

 

R的整数除法 : %/%

 

1:10 %/% 3
 [1] 0 0 1 1 1 2 2 2 3 3

 

 

要比较整数值是否相等,则对其进行 == , 得出是逻辑值 TRUE/FALSE

 

4==3
[1] FALSE

 

同样的,如果需要检查是否不相等,则使用 !=

 

5 != 4
[1] TRUE
 
== 只能针对整数情况,如果是浮点型数值,则可能会出现bug
 
如:
sqrt(2)^2 ==2
[1] FALSE
 
在这时,我们可使用 all.equal 函数对其进行检查。
all.equal(sqrt(2)^2,2)
[1] TRUE
2.2 特殊数字
 
R语言中主要有四种特殊数值: Inf(即英文的infinite简写)、-InfNaNnot-a-number)、NAnot-available)。
 
主要的计算如下:
 
> Inf +1 
[1] Inf
> Inf -1
[1] Inf
> Inf + Inf
[1] Inf
 
> NA+1
[1] NA
> NA+Inf
[1] NA
 
NA代表缺失值、 NaN 代表不是一个正确的数(如0/0
 
2.3 逻辑
 
R语言中的逻辑判断分为三种 TRUE FALSE NA 
逻辑运算符:
 
代表  
&  代表  
代表  
 

如:

> x<- c (TRUE,FALSE,NA)
> xy <- expand.grid(x=x , y = x)
> within(
+ xy,
+ {and <- x&y
+  or <- yd
+  not.y <- !y
+  not.x <- !x
+  })
      x     y not.x not.y    or   and
1  TRUE  TRUE FALSE FALSE  TRUE  TRUE
2 FALSE  TRUE  TRUE FALSE  TRUE FALSE
3    NA  TRUE    NA FALSE  TRUE    NA
4  TRUE FALSE FALSE  TRUE  TRUE FALSE
5 FALSE FALSE  TRUE  TRUE FALSE FALSE
6    NA FALSE    NA  TRUE    NA FALSE
7  TRUE    NA FALSE    NA  TRUE    NA
8 FALSE    NA  TRUE    NA    NA FALSE
9    NA    NA    NA    NA    NA    NA
 
其他的逻辑函数为 any  all 表示至少包含一个TRUE 全部为all则将返回为   TRUE
 
2.4 数字的类型
 
R中包含三种不同类型的数值变量浮点值 numeric 整数 integer 、复数 complex可通过class来分辨数的种类
 

> class(sqrt(1:10))

[1] "numeric"

> class(3+i)

Error: object 'i' not found

> class(3+1i)

[1] "complex"

> class(1)

[1] "numeric"

> class(1L)              #1后面添加L将数字变为整数型

[1] "integer"

> class((1:4))

[1] "integer"

 
同时 class 也可以对字符进行分类

> class(1==3)

[1] "logical"

> class("a")

[1] "character"

 
2.5 因子对字符的转换
在很多统计数据中,可能会对相应的数据进行归纳、win 代表1  lose代表 2我们可以通过factor 因子对其进行转换:

> clubResults <- c( "W" , "L" , "W" , "L" ,"W" )

> results <- factor(clubResults)

> results

[1] W L W L W

Levels: L W

 

先将其因子化,然后通过对因子水平进行定义以达到效果 :

 

> levels(results)

[1] "L" "W"

> nlevels(results)

[1] 2

> as.integer(results)

[1] 2 1 2 1 2

 

采取整数存储可以占据更少的内存 比如在10000次的随机胜负的情况下尤为明显

 

> new_result <- sample(c("W","L"),10000,replace = TRUE)

> new_result_factor <- as.factor(new_result)

> object.size(new_result)

80136 bytes

> object.size(new_result_factor)

40512 bytes

以上代码使用了函数 sample 随机抽样, object.size 表示可以返回对象的内存分配大小。 可以看出factor化后期占据的内存明显小于 向量化的 。

 
 
 

 

你可能感兴趣的:(R)