【R语言与数据分析实战】数据类型

1、变量赋值

  (1) <- 与 = 的区别

        作为赋值运算符,=只能用于命令的最外层,而<-则可以用在任何地方。例如:

mean(x <- c(1,2,3))

    [1] 2

x

    [1] 1 2 3
        相同情况下,若使用 = 运算符,则无法将数值保存到X。

 mean(x = c(1,2,3) )

    [1] 2

x

    错误: 找不到对象’X’

2、调用函数时指定参数

         R中通过参数位置与名称为函数指定参数。比如,有如下函数:

foo(a,b,c=1,d=1)

        foo函数有a、b、c、d四个参数,其中为c、d指定了默认值,所以调用函数时可以省略。如果不在函数参数中为c或d指定值,则要另行为其分别指定值。例如,在下列命令中,指定a=3、b=4、c=5,省略参数d,所以调用foo()时默认指定d=2。

foo(3,4,5)
foo(a=3,b=4,c=5)
foo(b=4,a=3,c=5)

3、标量

  (1) NULL 与 NA 的区别

        NA是缺失值,表示某个数据值遗失。NULL表示未定义的值,便于编程。

is_even <- NULL
if (若a为偶数) {
    is_even <- TRUE
} else {
    is_even <- FALSE
}

        上述代码中,执行if条件句之前,由于不知道is_even变量会被赋入何值,所以先将其初始化为NULL。随着if语句的执行,is_even变量最终会被赋予合适的值。

  (2) & 与 && 的区别

        与&不同,&&并不用与在向量的元素之间进行运算,它用于运算2个逻辑值。例如:

c(TRUE,TRUE) & c(TRUE,FALSE)

    [1] TRUE FALSE

c(TRUE,TRUE) && c(TRUE,FALSE)

    [1] TRUE

  (3) 因子

        因子相关函数

factor( 
    x,        #想用因子表现的值
    level,    #值的水平
    ordered   #若为TRUE,则为顺序型数据;若为FALSE,则为名义型数据。默认为FALSE。
)             #创建因子
sex <- factor("m",c("m","f"))
sex

    [1] m
    Levels: m f

nlevels(
x       #因子值
)       #返回因子中的水平个数
nlevels(sex)

    [1] 2

levels(
    x   #因子值
)       #返回因子水平目录
levels(sex)

    [1] “m” “f”

levels(sex)[1]

    [1] “m”

levels(sex)[2]

    [1] “f”

ordered(
    x   #想用因子表现的值(主要是字符串向量)
)       #创建有序因子
ordered("a",c("a","b","c"))

    [1] a
    Levels: a<b<c

4、向量

  (1) 创建向量

        使用c()函数创建向量,使用names()函数为向量中的各元素命名。

x <- c(1,3,4)
names(x) <- c("kim","seo","park")
x

    kim seo park
    1     3     4

  (2) 访问向量中的数据

        访问向量元素时,在[ ]中指定索引(下标)即可获取该索引处的元素。

  x<-c("a","b","c")
  x[1]

    [1]“a”
        如果传入的索引为负数,则返回该位置以外的所有元素。

  x<-c("a","b","c")
  x[-1]

    [1]“b” “c”
        使用x[start:end]能够获取start~end处的所有元素,其中包含位于start与end的元素。

  x<-c("a","b","c")
  x[1:3]

    [1]“a” “b” “c”
        如果使用names()函数对向量各元素命名,那么也可以使用元素名称访问向量中的元素。

x <- c(1,3,4)
names(x) <- c("kim","seo","park")
x

    kim seo park
    1     3     4

x[c("seo","park")]

    seo park
    3     4
        NROW()返回数组的行数或列数,既可用于矩阵,也可以用于向量。 小写形式的nrow()函数仅用于获取矩阵的行数。

  (3) 向量运算

函数描述
identical(x,y)判断对象是否相同
union(x,y)求合集
intersect(x,y)求交集
setdiff(x,y)求差集
setequal(x,y)判断x与y是否为相同集合
运算符含义
value %in% x判断向量x中是否保存着value
x+n对向量x中的所有元素加n,最后得到新向量。也可以使用*、/、-、==等运算符

        使用 == 或 != 运算符也可以对保存于两个向量中的值进行统一比较。然而,由于if等条件语句中要求只使用1个真值或假值,所以不要使用 ==、 != 运算符,而要使用前面介绍的identical()函数。

c(1,2,3) == c(1,2,100)

    [1] TRUE TRUE FALSE

  (4) 连续数字组成的向量

        seq()用于创建序列,seq_along(x)根据给定对象长度创建序列,所创建的向量长度与x的长度相同。

seq(
    from,  #初值
    to,   #终值
    by     #增值
)
seq(3,7,2)

    [1] 3 5 7

seq_along(
    along.with    #根据该参数长度创建序列
)                 #along.with长度为N时,返回包含1-N数字的向量
x <- c(2,3,4,5,6)
seq_along(x)

    [1] 1 2 3 4 5

  (5) 保存重复值的向量

rep(
    x.         #保存重复值的向量
    times,    #整个向量的重复次数
    each       #各个值的重复次数
)              #返回与x(保存重复值)相同类型的对象
rep(1:2,times=5)

    [1] 1 2 1 2 1 2 1 2 1 2

rep(1:2,each=5)

    [1] 1 1 1 1 1 2 2 2 2 2

 rep(1:2,each=5,times=2)

    [1] 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2

5、列表

  (1) 创建列表

list(
    key1=value1,
    key2=value2,)    #返回key1保存value1,返回key2保存value2……的列表
(x<-list(names="foo",height=c(1,3,5)))

    $ names
    [1] “foo”

    $ height
    [1] 1 3 5
        列表还可以混合存多种类型的数据,甚至一个列表中可以嵌套其他列表。

list(a=list(val=c(1,2,3),b=list(val=c(1,2,3,4)))

     $a
     $a $val
    [1] 1 2 3

     $b
     $b $val
    [1] 1 2 3

  (2) 访问列表中的数据

访问方法含义
x$key获取列表x中key键对应的值
x[n]从列表x中获取第n个数据的子列表
x[[n]]获取列表x中第n个键的值
x<-list(names="foo",height=c(1,3,5))
x$names

    [1] “foo”

x[1]

    $ names
    [1] “foo”

x[[1]]

    [1] “foo”

x[[2]]

    [1] 1 3 5

6、矩阵

  (1) 创建列表

matrix(
    data,     #要创建矩阵的数据向量
    nrow,    #行数
    ncol,    #列数
    byrow=FALSE,    #填充数据时,若byrow为True,则按行填充矩阵;若byrow为FALSE,则按列填充矩阵
)    #返回值为矩阵;
函数含义
dimnames(x)获取对象各维度名称
dimnames(x)<-value为对象的各个维度设置名称,第一个向量为行名,第二个向量为列名
rownames(x)获取矩阵的行名
rownames(x)<-value设置矩阵的行名
colnames(x)获取矩阵的行名
colnames(x)<-value设置矩阵的行名

  (2) 矩阵运算

函数含义
t(x)求矩阵或数据框的转置矩阵
solve(a,b)从方程a %*% x =b 中求解x,若不指定b,则求a的逆矩阵
nrow(x)求数组的行数
ncol(x)求数组的列数
dim(x)求对象的维度
dim(x)<-value设置对象的维度

        若为dim的返回值设置新维度,那么原数据维度将会改变。

x <- matrix(c(1,2,3,4,5,6),ncol=3)
dim(x)

    [1] 2 3

x

         [,1] [,2] [,3]
    [1,]   1   3   5
    [2,]   2   4   6

dim <- c(3,2)

         [,1] [,2]
    [1,]   1   4
    [2,]   2   5
    [3,]   3   6

7、数组

  (1) 创建数组

array(
    data=NA,           #保存数据的向量
    dim=length(data)   #数组维度,若不设置改参数,则创建一维数组
    dimnames=NULL      #维度名称
)    #返回值为数组
array(1:12,dim=c(3,4))

         [,1] [,2] [,3] [,4]
    [1,]   1   4   7   10
    [2,]   2   5   8   11
    [3,]   3   6   9   12

array(1:12,dim=c(2,2,3))

     , ,1
         [,1] [,2]
    [1,]   1   3
    [2,]   2   4
     , ,2
         [,1] [,2]
    [1,]   5   7
    [2,]   6   8
     , ,3
         [,1] [,2]
    [1,]   9   11
    [2,]  10  12

8、数据框

  (1) 创建数据框

        data.frame用于创建数据框,str用于查看任意R对象的内部结构。

(d <- data.frame(x=c(1,2,3,4,5),
                 y=c(2,4,6,8,10),
                 z=c('M','F','M','F','M')))

        x  y  z
    1  1  2  M
    2  2  4  F
    3  3  6  M
    4  4  8  F
    5  5 10 M

str(d)

    ‘data.frame’: 5 obs. of 3 variables:
     $ x: num 1 2 3 4 5
     $ y: num 2 4 6 8 10
     $ z: chr “M” “F” “M” “F” …
         使用类似语法也可以将不存在的w列添加到上述数据框d。

d$w <- c('A','B','C','D','E')
d

       x   y  z  w
    1  1   2  M  A
    2  2   4  F  B
    3  3   6  M  C
    4  4   8   F  D
    5  5  10  M  E

  (2)访问数据框

d <- data.frame(x=c(1,2,3,4,5),y=c(2,4,6,8,10))
d[,c("x")]

    [1] 1 2 3 4 5
        上述代码中,使用d[,c(“x”)]选取列x后,输出的结果并不是数据框的表形式,而更像向量。这是因为,列是一维时,返回值与相应列的数据类型不同。若要避免这种类型转换,只要设置drop=FALSE选项即可。

d[,c("x"),drop=FALSE]

        x
    1  1
    2  2
    3  3
    4  4
    5  5

函数含义
head(x)返回对象的开始部分
tail(x)返回对象的结尾部分
View(x)调用数据视图

9、类型判别

函数含义
class(x)判断对象x的数据类型
str(x)查看对象x的内部结构
is.factor(x)判断给定对象x是否为因子
is.numeric(x)判断给定对象x是否为保存数值的向量
is.character(x)判断给定对象x是否为保存字符串的向量
is.matrix(x)判断给定对象x是否为矩阵
is.array(x)判断给定对象x是否为数组
is.data.frame(x)判断给定对象x是否为数据框

10、类型转换

函数含义
as.factor(x)将给定对象x转换为因子
as.numeric(x)将给定对象x转换为数值向量
as.character(x)将给定对象x转换为字符串向量
as.matrix(x)将给定对象x转换为矩阵
as.array(x)将给定对象x转换为数组
as.data.frame(x)将给定对象x转换为数据框



ps:文章用于学习

[参考书目] 徐珉久,R语言与数据分析实战,2017

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值