数组 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 ...
随机推荐
- restful规则
参考连接:https://blog.igevin.info/posts/restful-api-get-started-to-write/#url_rules https://juejin.im/po ...
- Nginx 反向代理与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...
- npm 私服工具verdaccio 安装配置试用
1. 安装 npm install -g verdaccio 2. 启动 verdaccio // 界面显示信息 Verdaccio doesn't need superuser privileg ...
- 【android】Socket简单用法
Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket ...
- STM32F103外部晶振由8M变为12M
STM32官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是U ...
- ubuntu14.04安装pyspider
sudo apt-get install libcurl4-openssl-dev libxml2-dev libxslt1-dev sudo atp-get install phantomjs 激活 ...
- Linux_LVM Couldn't find device with uuid
Linux LVM commands result in Couldn't find device with uuid Couldn't find all physical volumes for v ...
- 字节序(byte order)和位序(bit order)
字节序(byte order)和位序(bit order) 在网络编程中经常会提到网络字节序和主机序,也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序. 以前我也基本只了 ...
- 【转】JMeter 聚合报告之90% Line参数说明
其实要说明这个参数的含义非常简单,可能你早就知道他的含义,但我对这个参数一直有误解,而且还一直以为是“真理”,原于一次面试,被问到了这个问题,所以引起我这个参数的重新认识. 先说说我错误的认识: 我一 ...
- 2012_p1 质因数分解 (prime.cpp/c/pas)
2012_p1 质因数分解 (prime.cpp/c/pas) 时间限制: 1 Sec 内存限制: 128 MB提交: 80 解决: 27[提交][状态][讨论版][命题人:外部导入] 题目描述 ...