数组 array 矩阵 list 数据框 dataframe
转自 : 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")
数组 array 矩阵 list 数据框 dataframe的更多相关文章
- R语言笔记1--向量、数组、矩阵、数据框、列表
注释:R语言是区分大小写的 1.向量 R语言中可以将各种向量赋值为一个变量,这种赋值操作符就是等号“=”,也可以使用“<-”. 1)产生向量 (1)函数c() 例如:x1=c(2,4,6,8,0 ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- 《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框
一.第二章 科学计算器 要检查两个数字是否一样,要使用 all.equal() ,不要使用 == ,== 符号仅用于比较两个整型数是否存在相同 . > all.equal(sqrt(2)^2,2 ...
- Spark2 加载保存文件,数据文件转换成数据框dataframe
hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafiledrwx ...
- pandas中数据框DataFrame获取每一列最大值或最小值
1.python中数据框求每列的最大值和最小值 df.min() df.max()
- R读取一个数据框 Dataframe,删去其中的某一列
可以参考:http://blog.sina.com.cn/s/blog_80572f5d0101anxw.html
- C语言 - cJSON解析特定格式 含有数组array类型的数据
在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...
- python数据处理工具 -- pandas(序列与数据框的构造)
Pandas模块的核心操作对象就是对序列(Series)和数据框(Dataframe).序列可以理解为数据集中的一个字段,数据框是值包含至少两个字段(或序列) 的数据集. 构造序列 1.通过同质的列表 ...
- R语言学习4:函数,流程控制,数据框重塑
本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...
随机推荐
- c#和c++互操作(平台调用相关)
[DllImport("ScreenCaptureLib.dll", CallingConvention = CallingConvention.Cdecl)] public st ...
- LA3890 Most Distant Point from the Sea
题意 PDF 分析 可以二分答案,检验就用半平面交,如果平面非空则合法. 时间复杂度\(O(T n \log^2 n)\) 代码 #include<iostream> #include&l ...
- 洛谷 P1262 间谍网络
传送门 题目大意:A能揭发B,B能揭发C..某些人可以被收买,如果收买A,那么A,B,C..的情报都可以得到. 求能否得到所有情报,如果可以最少花费多少钱去收买. 题解:tajian缩点 dfs/bf ...
- apache通过.htaccess(rewrite)判断手机电脑跳转-手机用户重定向到手机版
自动判断.重定向的办法也有几种: 使用网站构建的程序(例如PHP)来判断.重定向:使用服务器上的Web服务(例如Apache)来判断.重定向. 在Apache中设置重定向有两个办法: 在网站的http ...
- 对于global的介绍
抄自http://veniceweb.googlecode.com/svn/trunk/public/daily_tech_doc/erlang_global_20091109.txt 1. 介绍:这 ...
- linux(centos7) 安装nginx
linux(centos7) 安装nginx 1.14(stable) 版本 Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内, ...
- biosdevname网卡命名方式
在前天通过了最后的 Go/No-Go 会议后,Fedora 15 已定于下周正式发布,这个永远站在开源技术最前沿的发行版,即将迎来又一个新的大的变动.作为 Fedora 用户,相信你已经习惯了每个新版 ...
- 多线程使用信号量sem_init,sem_wait,sem_post
信号量的主要函数有: int sem_init(sem_t *sem,int pshared,unsigned int value); int sem_wait(sem_t *sem); int se ...
- 文件操作之增删改查3---文件的修改,f.replace(),在linux里的一些应用sed,with语句方法来打开一个或多个文件避免忘记关闭,python一行写的太长,怎么编写多行的规范
f.replace()with open("xxx","r",encoding="utf-8") as f: 想修改文件中间的数据,有两个办 ...
- PHP传入数组到js
1.方式一,处理成字符串 js再将字符串处理成数组. var spec1_default = "{$spec1_default}"; spec1_default = spec1_d ...