• 数组 array 矩阵 list 数据框 dataframe


    转自 :  http://blog.csdn.net/u011253874/article/details/43115447

    1. <span style="font-size:14px;">#R语言备忘录三#  
    2. #数组array和矩阵matrix、列表list、数据框dataframe  
    3. #数组  
    4. #数组的重要属性就是dim,维数  
    5. #得到4*5的矩阵  
    6. z <- 1:12  
    7. dim(z) <- c(3,4)  
    8. z  
    9. #构建数组  
    10. x <- array(1:20, dim = c(4,5))  
    11. #三维  
    12. y <- array(1:18, dim = c(2,3,3))  
    13. #数组下标  
    14. y[1, 2, 3]  
    15. #数组的广义转置,维度发生变化,把2维变成1维,把3维变成2维,把1维变成3维,即D[i,j,k] = C[j,k,i]  
    16. C <- array(1:24, dim = c(2,3,4))  
    17. D <- aperm(A, c(2,3,1))  
    18. #apply用于数组固定某一维度不变,进行计算  
    19. apply(A, 1, sum)  
    20. #矩阵  
    21. #产生矩阵  
    22. A <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE)  
    23. B <- matrix(3:17, nrow=5, ncol=3, byrow=TRUE)  
    24. #求方阵行列式的值  
    25. det(matrix(1:4, ncol = 2))  
    26. #内积  
    27. #矩阵的内积  
    28. A %*% B  
    29. #也可以使用crossprod函数  
    30. crossprod(A, B)  
    31. crossprod(A)  
    32. #向量的外积,也叫叉积  
    33. x <- 1:5  
    34. y <- 2*1:5  
    35. x %o% y  
    36. #也可以使用tcrossprod函数、outer  
    37. outer(x, y)  
    38. tcrossprod(x)  
    39. #产生对角阵  
    40. #如果变量是一个向量,则是以向量为对角线元素的对角阵  
    41. v <- c(1, 3, 5)  
    42. diag(v)  
    43. #如果变量是一个矩阵,则是取矩阵对角线元素作为对角阵对角线元素  
    44. diag(A)  
    45. #解线性方程Ax=b,  
    46. b <- matrix(c(1,1,1), nrow = 3, byrow = TRUE)  
    47. B <- matrix(1:9, nrow = 3, byrow = TRUE)  
    48. solve(B,b)  
    49. #求矩阵的逆  
    50. solve(B)  
    51. #ev$values是特征根,ev$vectors是特征向量组成的矩阵  
    52. SM <- crossprod(A, A)  
    53. ev <- eigen(SM)  
    54. #奇异解,svd$d返回的是矩阵A的奇异值,svd$u则是正交阵U,svd$v对应的是正交阵V, A = UDVT  
    55. svdA <- svd(A)  
    56. #把矩阵拉成向量  
    57. as.vector(A)  
    58. #数组或矩阵的维的名字  
    59. X <- matrix(1:6, ncol = 2,  
    60.             dimnames = list(c("one", "two", "three"), c("First", "Second")),  
    61.             byrow = T)  
    62. #亦或是  
    63. dimnames(A) <- list(c("one", "two", "three"), c("First", "Second"))  
    64. colnames(A) <- c("First", "Second")  
    65. rownames(A) <- c("one", "two", "three")  
    66. #列表  
    67. #构建列表  
    68. Lst <- list(name="Fred", wife="Mary", no.children=3, child.ages=c(4,7,9))  
    69. #列表元素,列表名[[下标]]  
    70. Lst[[2]]  
    71. Lst[[4]][2]  
    72. #也可以使用名字代替下标  
    73. Lst[["name"]]  
    74. Lst$name  
    75. #修改列表  
    76. Lst$name <- c("John", "Tom")  
    77. #删除列表某项  
    78. Lst$name <- NULL  
    79. #连接几个列表  
    80. list.ABC <- c(list.A, list.B, list.C)  
    81. #数据框  
    82. #data.frame,用法和list相同,如果list里的成分满足数据框,也可以使用as.data.frame转换  
    83. df<-data.frame(  
    84.     Name=c("Alice", "Becka", "James", "Jeffrey", "John"), Sex=c("F", "F", "M", "M", "M"),  
    85.     Age=c(13, 13, 12, 13, 12),  
    86.     Height=c(56.5, 65.3, 57.3, 62.5, 59.0)  
    87.     Weight=c(84.0, 98.0, 83.0, 84.0, 99.5)  
    88. )  
    89. df  
    90. #矩阵可以通过data.frame(X)转换  
    91. #取数据框的一部分  
    92. df[1:2, 3:5]  
    93. df[["Height"]]  
    94. df$Weight  
    95. #命名  
    96. names(df)  
    97. rownames(df)  
    98. #attch()函数将数据框中的变量调入内存中,方便调用当中的数据  
    99. attach(df)  
    100. #取消连接  
    101. detach(df)  
    102. #调用edit进行编辑数据  
    103. edit(df)  
    104. #因子factor  
    105. sex <- c("M","M", "F","F")  
    106. sexf <- factor(sex)  
    107. #因子水平  
    108. sex_level <- levels(sexf)  
    109. #用table统计各类数据的频数  
    110. sex_tab <- table(sexf)  
    111. #用gl()产生因子  
    112. #gl(n, k, length = n * k, labels = 1:n, ordered = FALSE)  
    113. </span> 

    、、、、、、、、、、、、、、、、、、、、、、、、、、、

    1. #R语言学习备忘录一#  
    2. #向量运算#  
    3.   
    4. x <- c(1,2,3,6)  
    5. #不小于x的最小整数   
    6. ceiling(x)  
    7. #不大于x的最大整数   
    8. floor(x)   
    9. #向0方向截取的x中的整数   
    10. trunc(x)   
    11. #将x舍入为指定位的小数   
    12. round(x,digits=2)   
    13. #将x舍入指定的有效数字位数   
    14. signif(x,digits=2)   
    15. #三角函数   
    16. cos(x)   
    17. sin(x)   
    18. tan(x)   
    19. acos(x)   
    20. asin(x)  
    21. #分位数,如求25%及50%分位数   
    22. quantile(x,c(.25,.5))   
    23. #求值域   
    24. range(x)   
    25. #求乘积函数  
    26. prod(x)  
    27. #滞后差分   
    28. diff(x)   
    29. #求最大值和最小值对应的位置  
    30. which.min(x)   
    31. which.max(x)  
    32. #数据标准化   
    33. x<-c(123,232,212,232,120,273)   
    34. mydata<-scale(x)   
    35. mydata  
    36.   
    37. #正则表达式匹配   
    38. str<-c("a","A","B","c")   
    39. grep("A",str,fixed=TRUE)   
    40.   
    41. #字符  
    42. #分割符strsplit   
    43. strsplit("abcde","")   
    44. #连接字符paste   
    45. paste("x",1:10,sep="")   
    46. paste("x",1:5,sep="T")   
    47. paste("Today is ",date())   
    48. #大写转换toupper   
    49. toupper("abcEF")   
    50. #小写转换tolower   
    51. tolower("ABC")  
    52. #计算字符数量 nchar   
    53. x<-c("ab","deew","James")   
    54. nchar(x)   
    55. nchar(x[2])   
    56. #提取或替换一个数值,和Excel mid函数差不多  substr   
    57. x<-"abcdefg"   
    58. substr(x,2,5) #2到5个元素  
    59. substr(x,2,5)<-"1111111"   
    60. x   
    61.   
    62. #注意两种等差数列的差别  
    63. 1:n-1  
    64. 1:(n-1)  
    65. #重复函数rep   
    66. y<-rep(1:5,2)   
    67. y  
    68. #等间隔函数  
    69. seq(-5, 5, by=.2)  
    70. seq(length=51, from=-5, by=.2)  
    71. #上下两种方式效果一样  
    72. #求行均值   
    73. apply(mydata,1,mean)   
    74. #求列均值   
    75. apply(mydata,2,mean)  
    76.   
    77. #逻辑变量  
    78. #判断一个逻辑向量是否都为真的函数是all  
    79. all(c(1,2,3,4,5,6)>3)  
    80. #判断一个逻辑向量是否有为真的函数any  
    81. any(c(1,2,3,4,5,6)>3)  
    82.   
    83. #缺失数据  
    84. #NA表示数据缺省或缺失  
    85. z <- c(1:3, NA)  
    86. z  
    87. a <- is.na(z)  
    88. #修改缺失数据  
    89. z[is.na(z)] <- 0  
    90. #is.nan()判断数据是否精确,inf也属于非精确  
    91. x <- c(0/1, 0/0, 1/0, NA)  
    92. is.nan(x)  
    93. is.finite(x)  
    94. is.infinite(x)  
    95. is.na(x)  
    96.   
    97. #复数向量  
    98. #复数z=x+isin(x)  
    99. x <- seq(-pi, pi, by = pi/10)  
    100. y <- sin(x)  
    101. z <- complex(re = x, im = y)  
    102. plot(z)  
    103. lins(z)  
    104.   
    105. #向量的下标运算  
    106. x <- c(1,4,7)  
    107. x[c(2,3)]  
    108. #修改元素值  
    109. x[c(1,3)] <- c(22, 33)  
    110. #逻辑向量  
    111. x <- c(1,4,7)  
    112. x < 5  
    113. x[x<5]  
    114. #分段函数  
    115. y <- numeric(length(x))  
    116. y[x<0] <- 1-x[x<0]  
    117. y[x>=0] <- 1-x[x>=0]  
    118. #即y=1-x,x<0; y=1+x,x>=0  
    119. #下标的负整数运算表示的是删除  
    120. v <- 10:20  
    121. v[-(1:5)]  
    122. #取字符串为下标  
    123. ages <- c(Li=33, Zhang=29, Liu=18)  
    124. ages["Zhang"]  
    125. #给向量赋予名字  
    126. fruit <- x(5, 10, 1, 29)  
    127. names(fruit) <- c("orange", "banana", "apple", "peach") 
  • 相关阅读:
    sql月,年,统计报表sql报表
    Sql server在cmd下的使用
    c# 批量处理数据录入
    vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
    以太坊去中心化淘宝智能合约案例
    智能合约入门
    智能资产构建去中心化的资产管理系统
    以太坊搭建联盟链
    web 前端
    EasyUI+bootsrtap混合前端框架
  • 原文地址:https://www.cnblogs.com/xinping-study/p/4721508.html
Copyright © 2020-2023  润新知