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")