数组 array 矩阵 list 数据框 dataframe
2015-08-11 16:56
274 查看
转自 : http://blog.csdn.net/u011253874/article/details/43115447
<span style="font-size:14px;">#R语言备忘录三#
#数组array和矩阵matrix、列表list、数据框dataframe
#数组
#数组的重要属性就是dim,维数
#得到4*5的矩阵
z <- 1:12
dim(z) <- c(3,4)
z
#构建数组
x <- array(1:20, dim = c(4,5))
#三维
y <- array(1:18, dim = c(2,3,3))
#数组下标
y[1, 2, 3]
#数组的广义转置,维度发生变化,把2维变成1维,把3维变成2维,把1维变成3维,即D[i,j,k] = C[j,k,i]
C <- array(1:24, dim = c(2,3,4))
D <- aperm(A, c(2,3,1))
#apply用于数组固定某一维度不变,进行计算
apply(A, 1, sum)
#矩阵
#产生矩阵
A <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE)
B <- matrix(3:17, nrow=5, ncol=3, byrow=TRUE)
#求方阵行列式的值
det(matrix(1:4, ncol = 2))
#内积
#矩阵的内积
A %*% B
#也可以使用crossprod函数
crossprod(A, B)
crossprod(A)
#向量的外积,也叫叉积
x <- 1:5
y <- 2*1:5
x %o% y
#也可以使用tcrossprod函数、outer
outer(x, y)
tcrossprod(x)
#产生对角阵
#如果变量是一个向量,则是以向量为对角线元素的对角阵
v <- c(1, 3, 5)
diag(v)
#如果变量是一个矩阵,则是取矩阵对角线元素作为对角阵对角线元素
diag(A)
#解线性方程Ax=b,
b <- matrix(c(1,1,1), nrow = 3, byrow = TRUE)
B <- matrix(1:9, nrow = 3, byrow = TRUE)
solve(B,b)
#求矩阵的逆
solve(B)
#ev$values是特征根,ev$vectors是特征向量组成的矩阵
SM <- crossprod(A, A)
ev <- eigen(SM)
#奇异解,svd$d返回的是矩阵A的奇异值,svd$u则是正交阵U,svd$v对应的是正交阵V, A = UDVT
svdA <- svd(A)
#把矩阵拉成向量
as.vector(A)
#数组或矩阵的维的名字
X <- matrix(1:6, ncol = 2,
dimnames = list(c("one", "two", "three"), c("First", "Second")),
byrow = T)
#亦或是
dimnames(A) <- list(c("one", "two", "three"), c("First", "Second"))
colnames(A) <- c("First", "Second")
rownames(A) <- c("one", "two", "three")
#列表
#构建列表
Lst <- list(name="Fred", wife="Mary", no.children=3, child.ages=c(4,7,9))
#列表元素,列表名[[下标]]
Lst[[2]]
Lst[[4]][2]
#也可以使用名字代替下标
Lst[["name"]]
Lst$name
#修改列表
Lst$name <- c("John", "Tom")
#删除列表某项
Lst$name <- NULL
#连接几个列表
list.ABC <- c(list.A, list.B, list.C)
#数据框
#data.frame,用法和list相同,如果list里的成分满足数据框,也可以使用as.data.frame转换
df<-data.frame(
Name=c("Alice", "Becka", "James", "Jeffrey", "John"), Sex=c("F", "F", "M", "M", "M"),
Age=c(13, 13, 12, 13, 12),
Height=c(56.5, 65.3, 57.3, 62.5, 59.0)
Weight=c(84.0, 98.0, 83.0, 84.0, 99.5)
)
df
#矩阵可以通过data.frame(X)转换
#取数据框的一部分
df[1:2, 3:5]
df[["Height"]]
df$Weight
#命名
names(df)
rownames(df)
#attch()函数将数据框中的变量调入内存中,方便调用当中的数据
attach(df)
#取消连接
detach(df)
#调用edit进行编辑数据
edit(df)
#因子factor
sex <- c("M","M", "F","F")
sexf <- factor(sex)
#因子水平
sex_level <- levels(sexf)
#用table统计各类数据的频数
sex_tab <- table(sexf)
#用gl()产生因子
#gl(n, k, length = n * k, labels = 1:n, ordered = FALSE)
</span>
、、、、、、、、、、、、、、、、、、、、、、、、、、、
#R语言学习备忘录一#
#向量运算#
x <- c(1,2,3,6)
#不小于x的最小整数
ceiling(x)
#不大于x的最大整数
floor(x)
#向0方向截取的x中的整数
trunc(x)
#将x舍入为指定位的小数
round(x,digits=2)
#将x舍入指定的有效数字位数
signif(x,digits=2)
#三角函数
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
#分位数,如求25%及50%分位数
quantile(x,c(.25,.5))
#求值域
range(x)
#求乘积函数
prod(x)
#滞后差分
diff(x)
#求最大值和最小值对应的位置
which.min(x)
which.max(x)
#数据标准化
x<-c(123,232,212,232,120,273)
mydata<-scale(x)
mydata
#正则表达式匹配
str<-c("a","A","B","c")
grep("A",str,fixed=TRUE)
#字符
#分割符strsplit
strsplit("abcde","")
#连接字符paste
paste("x",1:10,sep="")
paste("x",1:5,sep="T")
paste("Today is ",date())
#大写转换toupper
toupper("abcEF")
#小写转换tolower
tolower("ABC")
#计算字符数量 nchar
x<-c("ab","deew","James")
nchar(x)
nchar(x[2])
#提取或替换一个数值,和Excel mid函数差不多 substr
x<-"abcdefg"
substr(x,2,5) #2到5个元素
substr(x,2,5)<-"1111111"
x
#注意两种等差数列的差别
1:n-1
1:(n-1)
#重复函数rep
y<-rep(1:5,2)
y
#等间隔函数
seq(-5, 5, by=.2)
seq(length=51, from=-5, by=.2)
#上下两种方式效果一样
#求行均值
apply(mydata,1,mean)
#求列均值
apply(mydata,2,mean)
#逻辑变量
#判断一个逻辑向量是否都为真的函数是all
all(c(1,2,3,4,5,6)>3)
#判断一个逻辑向量是否有为真的函数any
any(c(1,2,3,4,5,6)>3)
#缺失数据
#NA表示数据缺省或缺失
z <- c(1:3, NA)
z
a <- is.na(z)
#修改缺失数据
z[is.na(z)] <- 0
#is.nan()判断数据是否精确,inf也属于非精确
x <- c(0/1, 0/0, 1/0, NA)
is.nan(x)
is.finite(x)
is.infinite(x)
is.na(x)
#复数向量
#复数z=x+isin(x)
x <- seq(-pi, pi, by = pi/10)
y <- sin(x)
z <- complex(re = x, im = y)
plot(z)
lins(z)
#向量的下标运算
x <- c(1,4,7)
x[c(2,3)]
#修改元素值
x[c(1,3)] <- c(22, 33)
#逻辑向量
x <- c(1,4,7)
x < 5
x[x<5]
#分段函数
y <- numeric(length(x))
y[x<0] <- 1-x[x<0]
y[x>=0] <- 1-x[x>=0]
#即y=1-x,x<0; y=1+x,x>=0
#下标的负整数运算表示的是删除
v <- 10:20
v[-(1:5)]
#取字符串为下标
ages <- c(Li=33, Zhang=29, Liu=18)
ages["Zhang"]
#给向量赋予名字
fruit <- x(5, 10, 1, 29)
names(fruit) <- c("orange", "banana", "apple", "peach")
<span style="font-size:14px;">#R语言备忘录三#
#数组array和矩阵matrix、列表list、数据框dataframe
#数组
#数组的重要属性就是dim,维数
#得到4*5的矩阵
z <- 1:12
dim(z) <- c(3,4)
z
#构建数组
x <- array(1:20, dim = c(4,5))
#三维
y <- array(1:18, dim = c(2,3,3))
#数组下标
y[1, 2, 3]
#数组的广义转置,维度发生变化,把2维变成1维,把3维变成2维,把1维变成3维,即D[i,j,k] = C[j,k,i]
C <- array(1:24, dim = c(2,3,4))
D <- aperm(A, c(2,3,1))
#apply用于数组固定某一维度不变,进行计算
apply(A, 1, sum)
#矩阵
#产生矩阵
A <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE)
B <- matrix(3:17, nrow=5, ncol=3, byrow=TRUE)
#求方阵行列式的值
det(matrix(1:4, ncol = 2))
#内积
#矩阵的内积
A %*% B
#也可以使用crossprod函数
crossprod(A, B)
crossprod(A)
#向量的外积,也叫叉积
x <- 1:5
y <- 2*1:5
x %o% y
#也可以使用tcrossprod函数、outer
outer(x, y)
tcrossprod(x)
#产生对角阵
#如果变量是一个向量,则是以向量为对角线元素的对角阵
v <- c(1, 3, 5)
diag(v)
#如果变量是一个矩阵,则是取矩阵对角线元素作为对角阵对角线元素
diag(A)
#解线性方程Ax=b,
b <- matrix(c(1,1,1), nrow = 3, byrow = TRUE)
B <- matrix(1:9, nrow = 3, byrow = TRUE)
solve(B,b)
#求矩阵的逆
solve(B)
#ev$values是特征根,ev$vectors是特征向量组成的矩阵
SM <- crossprod(A, A)
ev <- eigen(SM)
#奇异解,svd$d返回的是矩阵A的奇异值,svd$u则是正交阵U,svd$v对应的是正交阵V, A = UDVT
svdA <- svd(A)
#把矩阵拉成向量
as.vector(A)
#数组或矩阵的维的名字
X <- matrix(1:6, ncol = 2,
dimnames = list(c("one", "two", "three"), c("First", "Second")),
byrow = T)
#亦或是
dimnames(A) <- list(c("one", "two", "three"), c("First", "Second"))
colnames(A) <- c("First", "Second")
rownames(A) <- c("one", "two", "three")
#列表
#构建列表
Lst <- list(name="Fred", wife="Mary", no.children=3, child.ages=c(4,7,9))
#列表元素,列表名[[下标]]
Lst[[2]]
Lst[[4]][2]
#也可以使用名字代替下标
Lst[["name"]]
Lst$name
#修改列表
Lst$name <- c("John", "Tom")
#删除列表某项
Lst$name <- NULL
#连接几个列表
list.ABC <- c(list.A, list.B, list.C)
#数据框
#data.frame,用法和list相同,如果list里的成分满足数据框,也可以使用as.data.frame转换
df<-data.frame(
Name=c("Alice", "Becka", "James", "Jeffrey", "John"), Sex=c("F", "F", "M", "M", "M"),
Age=c(13, 13, 12, 13, 12),
Height=c(56.5, 65.3, 57.3, 62.5, 59.0)
Weight=c(84.0, 98.0, 83.0, 84.0, 99.5)
)
df
#矩阵可以通过data.frame(X)转换
#取数据框的一部分
df[1:2, 3:5]
df[["Height"]]
df$Weight
#命名
names(df)
rownames(df)
#attch()函数将数据框中的变量调入内存中,方便调用当中的数据
attach(df)
#取消连接
detach(df)
#调用edit进行编辑数据
edit(df)
#因子factor
sex <- c("M","M", "F","F")
sexf <- factor(sex)
#因子水平
sex_level <- levels(sexf)
#用table统计各类数据的频数
sex_tab <- table(sexf)
#用gl()产生因子
#gl(n, k, length = n * k, labels = 1:n, ordered = FALSE)
</span>
、、、、、、、、、、、、、、、、、、、、、、、、、、、
#R语言学习备忘录一#
#向量运算#
x <- c(1,2,3,6)
#不小于x的最小整数
ceiling(x)
#不大于x的最大整数
floor(x)
#向0方向截取的x中的整数
trunc(x)
#将x舍入为指定位的小数
round(x,digits=2)
#将x舍入指定的有效数字位数
signif(x,digits=2)
#三角函数
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
#分位数,如求25%及50%分位数
quantile(x,c(.25,.5))
#求值域
range(x)
#求乘积函数
prod(x)
#滞后差分
diff(x)
#求最大值和最小值对应的位置
which.min(x)
which.max(x)
#数据标准化
x<-c(123,232,212,232,120,273)
mydata<-scale(x)
mydata
#正则表达式匹配
str<-c("a","A","B","c")
grep("A",str,fixed=TRUE)
#字符
#分割符strsplit
strsplit("abcde","")
#连接字符paste
paste("x",1:10,sep="")
paste("x",1:5,sep="T")
paste("Today is ",date())
#大写转换toupper
toupper("abcEF")
#小写转换tolower
tolower("ABC")
#计算字符数量 nchar
x<-c("ab","deew","James")
nchar(x)
nchar(x[2])
#提取或替换一个数值,和Excel mid函数差不多 substr
x<-"abcdefg"
substr(x,2,5) #2到5个元素
substr(x,2,5)<-"1111111"
x
#注意两种等差数列的差别
1:n-1
1:(n-1)
#重复函数rep
y<-rep(1:5,2)
y
#等间隔函数
seq(-5, 5, by=.2)
seq(length=51, from=-5, by=.2)
#上下两种方式效果一样
#求行均值
apply(mydata,1,mean)
#求列均值
apply(mydata,2,mean)
#逻辑变量
#判断一个逻辑向量是否都为真的函数是all
all(c(1,2,3,4,5,6)>3)
#判断一个逻辑向量是否有为真的函数any
any(c(1,2,3,4,5,6)>3)
#缺失数据
#NA表示数据缺省或缺失
z <- c(1:3, NA)
z
a <- is.na(z)
#修改缺失数据
z[is.na(z)] <- 0
#is.nan()判断数据是否精确,inf也属于非精确
x <- c(0/1, 0/0, 1/0, NA)
is.nan(x)
is.finite(x)
is.infinite(x)
is.na(x)
#复数向量
#复数z=x+isin(x)
x <- seq(-pi, pi, by = pi/10)
y <- sin(x)
z <- complex(re = x, im = y)
plot(z)
lins(z)
#向量的下标运算
x <- c(1,4,7)
x[c(2,3)]
#修改元素值
x[c(1,3)] <- c(22, 33)
#逻辑向量
x <- c(1,4,7)
x < 5
x[x<5]
#分段函数
y <- numeric(length(x))
y[x<0] <- 1-x[x<0]
y[x>=0] <- 1-x[x>=0]
#即y=1-x,x<0; y=1+x,x>=0
#下标的负整数运算表示的是删除
v <- 10:20
v[-(1:5)]
#取字符串为下标
ages <- c(Li=33, Zhang=29, Liu=18)
ages["Zhang"]
#给向量赋予名字
fruit <- x(5, 10, 1, 29)
names(fruit) <- c("orange", "banana", "apple", "peach")
相关文章推荐
- cocos2dx 3.6源码分析之文件路径
- android--handler
- 正则表达式中,转义字符、元字符在 [] 中的含义
- PAT 1020. Tree Traversals (25)
- Swift 闭包(Closure)回调传值
- C语言宏定义中的#,##,#@及\符号的作用
- linux下的锁机制
- iOS入门(三十五) UITableView高级
- 使用ROS遇到的一些小问题
- POJ1679 The Unique MST 次小生成树
- Linux系统中的数据流重定向和管道
- Makefile
- Objective-C:异常的处理
- R list frame, matrix
- android studio手动加入jar包
- android解析json
- 树莓派PI2编译天猫魔盘驱动,附编译好ko文件
- java.net.InetAddress类的使用
- 5.【SELinux学习笔记】类型增强
- SSL简单交互过程