美文网首页
R语言--变量与数据结构

R语言--变量与数据结构

作者: Dear_Mozart | 来源:发表于2019-07-29 09:02 被阅读0次

    R语言的数据分类

    R语言的数据类型较多,但都是动态声明,即变量不会声明为某种数据类型。变量分配为R对象

    • 向量
    • 列表
    • 矩阵
    • 数组
    • 数据帧
    • 因子
      下面是几种最简单对象的类型
    # Atomic vector of type character.
    print("abc");#character
    
    # Atomic vector of type double.
    print(12.5)#numeric
    
    # Atomic vector of type integer.
    print(63L)#integer
    
    # Atomic vector of type logical.
    print(TRUE)#logical
    
    # Atomic vector of type complex.
    print(2+3i)#complex
    
    # Atomic vector of type raw.
    print(charToRaw('hello'))#raw
    

    向量vector

    最简单的是向量类型,即使用c()的形式声明。
    以下示例中,如果其中一个元素是字符,则非字符值被强制转换为字符类型

    # The logical and numeric values are converted to characters.
    s <- c('apple','red',5,TRUE)
    print(s)
    

    实际上,向量的多元素可以用冒号表示,比如

    v <- 6.6:12.6
    print(v)
    w <- 3.8:11.4
    

    即表示从6.6到12.6,逐次加一构成的向量;w表示从3.8逐次加一到10.8。还可以用函数创建:

    # Create vector with elements from 5 to 9 incrementing by 0.4.
    print(seq(5, 9, by = 0.4))
    

    如果其中一个元素是字符,则非字符值被强制转换为字符类型。

    # The logical and numeric values are converted to characters.
    s <- c('apple','red',5,TRUE)
    print(s)
    

    访问向量元素时,可以用'[ ]'填入适当条件作为索引。并且,向量支持数值运算,但必须是相同大小的。

    列表list

    创建列表用list函数,并且其中可以包含几乎任何数据类型,可以给list中的每个元素命名。

    # Create a list containing a vector, a matrix and a list.
    list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2), list("green",12.3))
    
    # Give names to the elements in the list.
    names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
    
    # Show the list.
    print(list_data)
    

    列表访问

    访问列表元素既可以用序号直接索引,也可以用名称索引

    # Access the first element of the list.
    print(list_data[1])
    
    # Access the list element using the name of the element.
    print(list_data$A_Matrix)
    

    列表操作

    操纵列表元素时,直接进行赋值操作。另外可以通过merged.list <- c(list1,list2)合并列表。

    # Convert the lists to vectors.
    v1 <- unlist(list1)
    v2 <- unlist(list2)
    

    矩阵matrix

    在R语言中创建矩阵的基本语法是

    matrix(data, nrow, ncol, byrow, dimnames)
    
    • 数据是成为矩阵的数据元素的输入向量。
    • nrow是要创建的行数。
    • ncol是要创建的列数。
    • byrow是一个逻辑线索。 如果为TRUE,则输入向量元素按行排列。
    • dimname是分配给行和列的名称。

    矩阵访问元素

    访问矩阵的元素直接用中括号填入矩阵下标访问,即a_{23}=M[2,3]。或者用单一下标直接访问整行或整列,即a_{13},a_{23},\cdots,a_{m3}=M[,3]

    矩阵计算

    使用R运算符对矩阵执行各种数学运算。 操作的结果也是一个矩阵。对于操作中涉及的矩阵,维度(行数和列数)应该相同。

    数组

    数组是可以在两个以上维度中存储数据的R数据对象。下面的例子实际上进行创建数组,以及数组命名的步骤:

    # Create two vectors of different lengths.
    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")
    
    # Take these vectors as input to the array.
    result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names, matrix.names))
    print(result)
    

    同样的,数组的访问类似于矩阵,以上数组有三个维度,访问时用中括号以及两个逗号可以提取一个,或多个元素

    print(array[1,3,4])
    print(array[3, ,2])
    print(array[2, , ])
    

    操作数组的元素通过访问数组的部分元素来执行。比如可以用两个逗号和一个维度的数字,来提取出矩阵。
    我们可以使用apply()函数在数组中的元素上进行计算。

    apply(x, margin, fun)
    
    • x是一个数组。
    • margin是所使用的数据集的名称。
    • fun是要应用于数组元素的函数
      从而进行数组内部的运算

    因子

    在R语言中,名义变量和有序变量可以使用因子来表示。语法格式为

    f <- factor(x=charactor(), levels, labels=levels, exclude = NA, ordered = is.ordered(x), namax = NA)
    
    • levels:因子数据的水平,默认是x中不重复的值;
    • labels:标识某水平的名称,与水平一一对应,以方便识别,默认取levels的值;
    • exclude:从x中剔除的水平值,默认为NA值;
    • ordered:逻辑值,因子水平是否有顺序(编码次序),若有取TRUE,否则取FALSE;
    • nmax:水平个数的限制。
      gl()函数用于定义有规律的因子向量,其语法格式如下
    gl(n, k, length = n*k, labels = 1:n, ordered = FALSE)
    
    • n: 正整数,表示因子的水平个数
    • k:正整数,表示每个水平重复的次数;
    • length: 正整数,表示因子向量的长度,默认为n*k
    • labels: 表示因子水平的名称,默认值为1:n
    • ordered: 逻辑变量,表示因子水平是否是有次序的,默认值为FALSE
      并且factor()函数可以把向量data转化为factor。简单来说,因子就是一段具有二元层级顺序的有限序列,print打印出的是其level层级。数据帧(data.frame)中的每一列也可看做因子。
    v <- gl(3, 4, labels = c("Tampa", "Seattle","Boston"))
    print(v)
    # 结果为
    Tampa   Tampa   Tampa   Tampa   Seattle Seattle Seattle Seattle Boston 
    [10] Boston  Boston  Boston 
    Levels: Tampa Seattle Boston
    

    数据帧

    创建数据帧

    # Create data frame
    new.address <- data.frame(
       city = c("Lowry", "Charlotte"),
       state = c("CO", "FL"),
       zipcode = c("80230", "33949"),
       stringsAsFactors = FALSE
    )
    

    并且通过str()函数可以看到数据帧的结构。可以通过应用summary()函数获取数据的统计摘要和性质。也可以提取

    # Extract Specific columns.
    result <- data.frame(emp.data$emp_name,emp.data$salary)
    print(result)
    
    # 先提取前两行,再提取所有列
    # Extract first two rows.
    result <- emp.data[1:2,]
    
    # 也可以一并提取
    result <- emp.data[c(3,5),c(2,4)]
    

    要扩展数据帧只需使用新的列名称添加列向量,注意要使用$对数据帧名称进行索引。或者,添加行用rbind()函数,添加列用cbind()

    参考

    https://www.w3cschool.cn/

    相关文章

      网友评论

          本文标题:R语言--变量与数据结构

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