数组 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. x <- c(1,2,3,6)
  4. #不小于x的最小整数
  5. ceiling(x)
  6. #不大于x的最大整数
  7. floor(x)
  8. #向0方向截取的x中的整数
  9. trunc(x)
  10. #将x舍入为指定位的小数
  11. round(x,digits=2)
  12. #将x舍入指定的有效数字位数
  13. signif(x,digits=2)
  14. #三角函数
  15. cos(x)
  16. sin(x)
  17. tan(x)
  18. acos(x)
  19. asin(x)
  20. #分位数,如求25%及50%分位数
  21. quantile(x,c(.25,.5))
  22. #求值域
  23. range(x)
  24. #求乘积函数
  25. prod(x)
  26. #滞后差分
  27. diff(x)
  28. #求最大值和最小值对应的位置
  29. which.min(x)
  30. which.max(x)
  31. #数据标准化
  32. x<-c(123,232,212,232,120,273)
  33. mydata<-scale(x)
  34. mydata
  35. #正则表达式匹配
  36. str<-c("a","A","B","c")
  37. grep("A",str,fixed=TRUE)
  38. #字符
  39. #分割符strsplit
  40. strsplit("abcde","")
  41. #连接字符paste
  42. paste("x",1:10,sep="")
  43. paste("x",1:5,sep="T")
  44. paste("Today is ",date())
  45. #大写转换toupper
  46. toupper("abcEF")
  47. #小写转换tolower
  48. tolower("ABC")
  49. #计算字符数量 nchar
  50. x<-c("ab","deew","James")
  51. nchar(x)
  52. nchar(x[2])
  53. #提取或替换一个数值,和Excel mid函数差不多  substr
  54. x<-"abcdefg"
  55. substr(x,2,5) #2到5个元素
  56. substr(x,2,5)<-"1111111"
  57. x
  58. #注意两种等差数列的差别
  59. 1:n-1
  60. 1:(n-1)
  61. #重复函数rep
  62. y<-rep(1:5,2)
  63. y
  64. #等间隔函数
  65. seq(-5, 5, by=.2)
  66. seq(length=51, from=-5, by=.2)
  67. #上下两种方式效果一样
  68. #求行均值
  69. apply(mydata,1,mean)
  70. #求列均值
  71. apply(mydata,2,mean)
  72. #逻辑变量
  73. #判断一个逻辑向量是否都为真的函数是all
  74. all(c(1,2,3,4,5,6)>3)
  75. #判断一个逻辑向量是否有为真的函数any
  76. any(c(1,2,3,4,5,6)>3)
  77. #缺失数据
  78. #NA表示数据缺省或缺失
  79. z <- c(1:3, NA)
  80. z
  81. a <- is.na(z)
  82. #修改缺失数据
  83. z[is.na(z)] <- 0
  84. #is.nan()判断数据是否精确,inf也属于非精确
  85. x <- c(0/1, 0/0, 1/0, NA)
  86. is.nan(x)
  87. is.finite(x)
  88. is.infinite(x)
  89. is.na(x)
  90. #复数向量
  91. #复数z=x+isin(x)
  92. x <- seq(-pi, pi, by = pi/10)
  93. y <- sin(x)
  94. z <- complex(re = x, im = y)
  95. plot(z)
  96. lins(z)
  97. #向量的下标运算
  98. x <- c(1,4,7)
  99. x[c(2,3)]
  100. #修改元素值
  101. x[c(1,3)] <- c(22, 33)
  102. #逻辑向量
  103. x <- c(1,4,7)
  104. x < 5
  105. x[x<5]
  106. #分段函数
  107. y <- numeric(length(x))
  108. y[x<0] <- 1-x[x<0]
  109. y[x>=0] <- 1-x[x>=0]
  110. #即y=1-x,x<0; y=1+x,x>=0
  111. #下标的负整数运算表示的是删除
  112. v <- 10:20
  113. v[-(1:5)]
  114. #取字符串为下标
  115. ages <- c(Li=33, Zhang=29, Liu=18)
  116. ages["Zhang"]
  117. #给向量赋予名字
  118. fruit <- x(5, 10, 1, 29)
  119. names(fruit) <- c("orange", "banana", "apple", "peach")
时间: 2024-08-26 05:36:35

数组 array 矩阵 list 数据框 dataframe的相关文章

R读书笔记一:变量,向量,数组,矩阵,数据框,读写文件,控制流

R读书笔记一:变量,向量,数组,矩阵,数据框,读写文件,控制流 1.创建向量和矩阵 函数c( ), length( ), mode( ), rbind( ), cbind( ) 1)创建向量,求向量长度,向量类型. > x1=c(2,4,6,8,0) > x2=c(1,3,5,7,9) > length(x1) [1] 5 > mode(x1) [1] "numeric" > x1 [1] 2 4 6 8 0 > x1[3] [1] 6 > a

R 语言数据结构 --2 矩阵和数据框②数据框-dataframe

2018年6月11日晚,今天又中午没睡觉,但是还是不觉得困.也不觉得头疼,其实很多事情都是分人的.你不一定非要午睡,午睡是给早上干完活回寝室特别累的人,是视情况而定的,并不是每个人每天都要午睡的,很多事情养成了习惯反而是一种拖累,相反适时而动才是明智之举.比如早起早睡是好习惯,午睡如果下午会觉得头疼,就应该反思适不适合自己,很多事情也是这样.强迫自己并不好. 说多了,说回来,今天讲数据框dataframe 注意是data不是date.很重要!!!打错字哭都没用. 1dataframe的创建: 一

R语言实战-数据类型-2(数据框dataframe)

5.数据框dataframe  data.frame 创建 data.frame() 1 > a<-c(1,2,3,4,5) 2 > b<-c('a','b','c','d','e') 3 > c<-c(T,F,F,F,T) 4 > x<-data.frame(a,b,c) 5 > x 6 a b c 7 1 1 a TRUE 8 2 2 b FALSE 9 3 3 c FALSE 10 4 4 d FALSE 11 5 5 e TRUE PS:子元素

Spark2 加载保存文件,数据文件转换成数据框dataframe

hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafile drwxr-xr-x - wangxiao supergroup 0 2016-10-15 10:46 /datafile/wangxiao -rw-r--r-- 3 wangxiao supergroup 16755 2016-10-15 10:46 /datafile/wangxiao/Affairs

Spark2加载保存文件,数据文件转换成数据框dataframe

hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafile drwxr-xr-x   - wangxiao supergroup          0 2016-10-15 10:46 /datafile/wangxiao -rw-r--r--   3 wangxiao supergroup      16755 2016-10-15 10:46 /datafil

R 语言数据结构 --2 矩阵和数据框①矩阵-matrix

矩阵-matrix-2018年6月9日 今天很可惜,没有过多地学习R语言(主要因为去听了党课,学习了党重要讲话,所以没有看书),所以今天就总结一个矩阵吧.不过多的学习了. 首先稍微复习一下昨天的因子,首先要记得的就是mode()看每个元素,class()看整体是什么,另外如果你把TRUE abc 1都传给一个向量,那向量会把它进行类型转换.安全性:字符串>数字>逻辑值.会尽量向安全性高的转换.这个是隐式类型转换.当然也可以用as家族进行类型转化,例如将数字转换成字符串:as.character

pandas dataframe 数据框

数据框是一个二维数据结构,类似于SQL中的表格.借助字典,数组,列表和序列等可以构造数据框. 1.字典创建数据框,则列的名称为key的名称: d = {'one':pd.Series([1,2,3],index= ['a','b','c']), 'two':pd.Series([1,2,3,4],index=['a','b','c','d']) } print(pd.DataFrame(d)) 2.列表创建数据框: d = pd.DataFrame([[1,2,3,4],[5,6,7,8],[1

pandas模块学习之创建序列和数据框

import numpy as np import pandas as pd # 序列的创建,总共三种方式 #(1)一维数组创建 arr = np.arange(10) print(arr) print(type(arr)) s1 = pd.Series(arr) print(s1) print(type(s1)) print(s1[1]) #(2)字典的方式创建 dic = {'a':10,'b':20,'c':30,'d':40,'e':50} print(dic) print(type(d

R语言数组array函数

数组是一个可以在两个以上的维度存储数据的R数据对象.例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列.数组只能存储数据类型. 使用 array()函数创建数组.它需要向量作为输入,并使用 dim 参数的值,以创建一个数组. 示例 例子下面将创建的每两个3×3矩阵的数组,具有3行3列. # Create two vectors of different lengths. vector1 <- c(5,9,3) vector2 <- c(10,11,12,13,14,15