美文网首页
2021-07-08R语言的数据类型(一)

2021-07-08R语言的数据类型(一)

作者: 不学无数YD | 来源:发表于2021-07-08 10:15 被阅读0次

    本文整理了菜鸟教程的R语言的数据类型基础,整理思路为一维到多维:
    细节请访问https://www.runoob.com/r

    image.png
    image.png
    此处忽略了factor、frame等,但是加进去了list。
    
    
    
    # R 数据类型
    
    
    # 向量
    # c() 是一个创造向量的函数
     a = c(3, 4)
     b = c(5, 0)
     a + b
    # [1] 8 4
    a = c(10, 20, 30, 40, 50)
    a[2]#R 语言中的"下标"不代表偏移量,而代表第几个,也就是说是从 1 开始的!
    a[1:4] # 取出第 1 到 4 项,包含第 1 和第 4 项
    a[c(1, 3, 5)] # 取出第 1, 3, 5 项
    a[c(-1, -5)] # 去掉第 1 和第 5 项
    
    a = c(1, 3, 5, 2, 4, 6)
    rev(a)
    sort(a)
    order(a)#order() 函数返回的是一个向量排序之后的下标向量。
    a[order(a)]
    
    
    #向量生成
    nzp <- c(1,2)
    print(nzp)
    seq(1, 9, 2)
    seq(0, 1, length.out=3)#生成等差数列
    
    # rep 是 repeat(重复)的意思,可以用于产生重复出现的数字序列:
    rep(0, 5)
    
    
    # 向量中常会用到 NA 和 NULL ,这里介绍一下这两个词语与区别:
    # 
    # NA 代表的是"缺失",NULL 代表的是"不存在"。
    # NA 缺失就像占位符,代表这里没有一个值,但位置存在。
    # NULL 代表的就是数据不存在。
    length(c(NA, NA, NULL))
    
    
    
    # 创建两个列表
    list1 <- list(1,2,3)
    list2 <- list("Google","Runoob","Taobao")
    
    # 合并列表
    merged.list <- c(list1,list2)
    
    # 显示合并后的列表
    print(merged.list)
    
    # 创建列表
    list1 <- list(1:5)
    print(list1)
    
    list2 <-list(10:14)
    print(list2)
    
    # 转换为向量
    v1 <- unlist(list1)
    v2 <- unlist(list2)
    
    print(v1)
    print(v2)
    
    # 两个向量相加
    result <- v1+v2
    print(result)
    # R 语言的矩阵可以使用 matrix() 函数来创建,语法格式如下:
    
    matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
    
    # 参数说明:
    # 
    # data 向量,矩阵的数据
    # 
    # nrow 行数
    # 
    # ncol 列数
    #
    # byrow 逻辑值,为 FALSE 按列排列,为 TRUE 按行排列
    # 
    # dimname 设置行和列的名称
    
    # 创建一个数字矩阵:
    # byrow 为 TRUE 元素按行排列
    M <- matrix(c(3:18), nrow = 4, byrow = TRUE)
    print(M)
    
    # Ebyrow 为 FALSE 元素按列排列
    N <- matrix(c(3:14), nrow = 3, byrow = FALSE)
    print(N)
    
    # 定义行和列的名称
    rownames = c("row1", "row2", "row3", "row4")
    colnames = c("col1", "col2", "col3")
    
    P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
    print(P)
    # 转置矩阵
    # R 语言矩阵提供了 t() 函数,可以实现矩阵的行列互换
    # 创建一个 2 行 3 列的矩阵
    M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
    print(M)
    # [,1] [,2] [,3]
    # [1,]    2    6    5
    # [2,]    1   10    4
    # 转换为 3 行 2 列的矩阵
    print(t(M))
    # 访问矩阵元素
    
    # 定义行和列的名称
    rownames = c("row1", "row2", "row3", "row4")
    colnames = c("col1", "col2", "col3")
    
    # 创建矩阵
    P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
    print(P)
    # 获取第一行第三列的元素
    print(P[1,3])
    
    # 获取第四行第二列的元素
    print(P[4,2])
    
    # 获取第二行
    print(P[2,])
    
    # 获取第三列
    print(P[,3])
    
    # 创建 2 行 3 列的矩阵
    matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
    print(matrix1)
    
    matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
    print(matrix2)
    
    # 两个矩阵相加
    result <- matrix1 + matrix2
    cat("相加结果:","\n")
    print(result)
    
    # 两个矩阵相减
    result <- matrix1 - matrix2
    cat("相减结果:","\n")
    print(result)
    
    # 矩阵乘除法
    # 创建 2 行 3 列的矩阵
    matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
    print(matrix1)
    
    matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
    print(matrix2)
    
    # 两个矩阵相乘
    result <- matrix1 * matrix2
    cat("相乘结果:","\n")
    print(result)
    
    # 两个矩阵相除
    result <- matrix1 / matrix2
    cat("相除结果:","\n")
    print(result)
    # R 语言数组创建使用 array() 函数,该函数使用向量作为输入参数,可以使用 dim 设置数组维度。
    
    # array() 函数语法格式如下:
    array(data = NA, dim = length(data), dimnames = NULL)
    
    # 参数说明:
    # 
    # data 向量,数组元素。
    # dim 数组的维度,默认是一维数组。
    # dimnames 维度的名称,必须是个列表,默认情况下是不设置名称的。
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    
    # 创建数组
    result <- array(c(vector1,vector2),dim = c(3,3,2))
    print(result)
    
    # 使用 dimnames 参数来设置各个维度的名称::
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    column.names <- c("COL1","COL2","COL3")
    row.names <- c("ROW1","ROW2","ROW3")
    matrix.names <- c("Matrix1","Matrix2")
    
    # 创建数组,并设置各个维度的名称
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    column.names <- c("COL1","COL2","COL3")
    row.names <- c("ROW1","ROW2","ROW3")
    matrix.names <- c("Matrix1","Matrix2")
    
    # 创建数组,并设置各个维度的名称
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    column.names <- c("COL1","COL2","COL3")
    row.names <- c("ROW1","ROW2","ROW3")
    matrix.names <- c("Matrix1","Matrix2")
    
    # 创建数组,并设置各个维度的名称
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    column.names <- c("COL1","COL2","COL3")
    row.names <- c("ROW1","ROW2","ROW3")
    matrix.names <- c("Matrix1","Matrix2")
    result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
    print(result)
    
    # 访问数组元素
    
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    column.names <- c("COL1","COL2","COL3")
    row.names <- c("ROW1","ROW2","ROW3")
    matrix.names <- c("Matrix1","Matrix2")
    
    # 创建数组
    result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
    
    # 显示数组第二个矩阵中第三行的元素
    print(result[3,,2])
    
    # 显示数组第一个矩阵中第一行第三列的元素
    print(result[1,3,1])
    
    # 输出第二个矩阵
    print(result[,,2])
    
    
    
    # 操作数组元素
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    
    # 创建数组
    array1 <- array(c(vector1,vector2),dim = c(3,3,2))
    
    # 创建两个不同长度的向量
    vector3 <- c(9,1,0)
    vector4 <- c(6,0,11,3,14,1,2,6,9)
    array2 <- array(c(vector1,vector2),dim = c(3,3,2))
    
    # 从数组中创建矩阵
    matrix1 <- array1[,,2]
    matrix2 <- array2[,,2]
    
    # 矩阵相加
    result <- matrix1+matrix2
    print(result)
    
    
    # apply() 元素对数组元素进行跨维度计算,语法格式如下:
    # apply(x, margin, fun)
    # 参数说明:
    # 
    # x 数组
    # 
    # margin 数据名称
    # 
    # fun 计算函数
    # 
    # 以下我们使用 apply() 函数来计算数组两个矩阵中每一行对数字之和。
    # 创建两个不同长度的向量
    vector1 <- c(5,9,3)
    vector2 <- c(10,11,12,13,14,15)
    
    # 创建数组
    new.array <- array(c(vector1,vector2),dim = c(3,3,2))
    print(new.array)
    
    # 计算数组中所有矩阵第一行的数字之和
    result <- apply(new.array, c(1), sum)
    print(result)
    

    相关文章

      网友评论

          本文标题:2021-07-08R语言的数据类型(一)

          本文链接:https://www.haomeiwen.com/subject/vzbzultx.html