R的对象类型包括数值型(numeric),复数型(complex),逻辑型(logical),字符型(character)和原味型(raw),列表(list)
递归结构:函数(function)和表达式(expression),内在属性:函数mode和length

attr(z,"dim")<-c(10,10)

允许R把z当作一个10*10的矩阵。
泛型函数 plot(),summary(),unclass()去除对象的类作用
因子 factor是一个对等长的其他向量元素进行分类(分组)的向量对象。

R可以正确地表示无穷的数值,如用Inf和-Inf表示(正负)无穷,或者用NaN(非数字)表示不是数字的值。

数组和矩阵
维度向量(dimension vector)是一个正整数向量。向量只有在定义了dim属性后才能作为数组在R中使用。
数据向量(data vector)的值在数组中的排列顺序采用FORTRAN方式的数组元素次序,即“按列次序”,第一下标变化最快,最后下标变化最慢。
数组分割可以通过在下标位置给定一系列索引向量实现;如果某个位置给定的索引向量为空,则该下标处所有可能值都会被取到。
数组 外积运算(outer product)。维度向量通过连续两个操作数的维度向量得到;数据向量则由a的数据向量和b的数据向量元素所有可能乘积得到。外积是通过特别的操作符%%s实现。两个常规向量的外积是一个双下标的数组(矩阵,最大秩为1),外积运算不符合交换律。
函数 crossprod()可以完成“矢积”(crossproduct)运算,crossprod(X,y)和t(X) %% y等价,但在运算上更为高效。
函数 diag() 当V是一个向量时,diag()返回以该向量元素为对象元素的对角矩阵。当M是一个矩阵时,diag(M)返回M的对角元素。如果k是单个值,diag()的结果就是k
k的方阵。

数组和矩阵
矩阵 matrix(), 数组 array()

Z<-array(data_vector,dim_vector)

数组的广义转置:函数 aperm(a,perm)可以用来重排一个数组a
矩阵相乘 %*%

线性方程和求逆:

solve(A,b) x=A^(-1)b ,A^(-1)  表示A的逆(inverse)
solve(A)

特征值和特征向量
函数 eigen(Sm)用来计算矩阵Sm的特征值和特征向量。函数的返回值是一个含有values和vector两个分量的列表。

ev<-eigen(Sm)

evval表示Sm的特征值向量,evval表示Sm的特征值向量,evvec则是相应特征向量构成的一个矩阵。

evals<-eigen(Sm)$values
eigen(Sm)

奇异值分解和行列式
函数svd(M)可以把任意一个矩阵M作为一个参数,且对M进行奇异值分解。包括一个和M列空间一致的正交列U的矩阵,一个和M列空间一致的正交列V的矩阵,以及一个正元素D的对角矩阵。D以对角元素向量的形式返回。
svd(M)的结果是由d,u,v构成的一个列表。

absdetM <- prod(svd(M)$d)

计算M行列式的绝对值。如果在各种矩阵中都需要这种运算,可以把它定义为一个R函数

absdet <- function(M) prod(svd(M)$d)

此后可以把absdet()当一个R函数使用。
R有一个计算行列式(包括符号)的内置函数det和另外一个给出符号和模(对数坐标可选)的函数。

最小二乘法拟合和QR分解 
函数lsfit()返回最小二乘法拟合(Least squares fitting)的结果列表。

ans <- lsfit(X,y)

得到最小二乘法拟合结果,其中y是观测向量,X是设计矩阵。
Qr()及其相关函数

Xplus <- qr(X)
b <- qr.coef(Xplus,y)
fit <- qr.fitted(Xplus,y)
res <- qr.resid(Xplus,y)

计算y在fit上的正交投影,在res正交补空间上的投影以及在b投影上的系数向量。

对数组实现连接操作的函数c()
将一个数组强制转换成简单向量的标准方法是用函数as.vector()

vec <- as.vector(X)

相似效果的方法是采用单参数的c()函数

vec <- c()

因子的频率表
函数 table()可以从等长的不同因子中计算出频率表。

incomef <- factor(cut(incomes,break = 35+10*(0:7)))
table(incomef,statef)

列表和数据框 
R的列表(list)是一个以对象的有序集合构成的对象。列表中包含的对象成为它的分量(components),一个列表可以同时包括数值向量、逻辑向量、矩阵、复向量、字符数组、函数等。分量会被编号(numbered),并且可以利用这种编号来访问分量。如果Lst[[4]]是一个有下标的数组,那么Lst[[4]][1]就是该数组的第一个元素。
[[]]是用来选择单个元素的操作符,得到的是列表Lst中的第一个对象,并且含有分量名字的命名列表(named list)中的分量名字会被排除在外;而[]是一个更为一般的下标操作符,得到的是Lst中仅仅由第一个元素构成的子列表。如果是命名列表,分量名字会传给子列表。
列表扩充分量 Lst <- list(matrix=Mat)

数据框
数据框 data.frame
分量必须是向量(数值,字符,逻辑),因子,数值矩阵,列表或者其他数据框
矩阵,列表和数据框为新的数据框提供了尽可能多的变量
在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数
符合数据框限制的列表可被函数as.data.frame()强制转换成数据框

read.table()函数
为了可以直接读取整个数据框,外部文件常常要求有特定的格式
第一行有该数据框各个变量的名字
随后的行中第一个条目是行标签,其他条目是各个变量的值
在文件中,第一行比第二行少一个条目,这样是被强制要求。可以通过设定read.table()的参数header=TRUE来解决这个问题。
默认情况下,数值项(除了行标签)以数值变量的形式读入,而非数据变量则以因子的形式读入。

HousePrice <- read.table("houses.data",header=TRUE)

header=TRUE 选项指定第一行是标题行,并且省略文件中给定的行标签。

scan()函数
有三个数据向量,长度一致且要求并行读入,第一个向量是字符模式,另外两个是数值模式,文件是input.dat

inp <- scan("input.dat",list("",0,0))

第二个参数是一个设定读入向量模式的虚拟列表结构(dummy list structure)
把数据条目分成三个独立的向量,可以使用赋值方式:

label <- inp[[1]];x <- inp[[2]];y <- inp[[3]]

可以用名字直接访问向量

inp <- scan("input.dat",list(id="",0,0))

分别访问变量,可以提取这些数据框中的分量赋给新的变量,可以把列表绑定在搜索路径的位置2中

label <- inp$id;x <- inp$x;y <- inp$y   

如果第二个参数是一个单一值(虚拟值)而不是列表,那么一个单一向量将会被读入。它的所有元素将会和这个虚拟值的模式一致。

X <- matrix(scan("light.dat",0),ncol=5,byrow=TRUE)

访问内置数据
内置数据集(包datasets),查看当前能访问的数据及列表 data()
用edit调用数据框和矩阵时,R会产生一个电子表形式的编辑环境

xnew <- edit(xold)

这样做允许编辑数据集xold,将修改后的对象保存到xnew里。
更改原始的数据集xold,最简单的办法是用fit(xold)。它等价于xold <- edit(xold)

xnew <- edit(data.frame())

允许以电子表格形式的界面输入新数据


Copyright © 吴华锦
雅致寓于高阁渔舟唱晚,古典悠然
格调外发园林绿树萦绕,馥郁清香

R基础的更多相关文章

  1. R基础学习

    R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...

  2. 社交网络分析的 R 基础:(一)初探 R 语言

    写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件 ...

  3. R(一): R基础知识

    R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...

  4. 《R语言入门与实践》第一章:R基础

    前言 本章介绍了 R 语言的基础知识 界面: 使用命令 “ R “进行命令行的实时编译 对象 定义: 用于储存数据的,设定一个名称 格式: a <- 1:6 命名规则: 规则1:不能以数字开头规 ...

  5. R基础学习(三)-- 简单练习(shiny+mysql+barplot)

    测试环境:win10+RStudio 提前准备: install.packages('shiny') install.packages('RMySQL') 数据表准备: 最终实现的界面效果如下:点击[ ...

  6. R基础学习(二)-- 连接sqlserver

    测试环境:win10+RStudio 三个步骤:(1)创建ODBC数据源:(2)install.packages('RODBC') :(3)编写连接测试脚本 (1)创建ODBC数据源 控制面板-> ...

  7. R基础学习(一)-- 连接mysql数据库

    测试环境:win10+RStudio (1)在Console加载两个插件 >install.packages('DBI') Installing package into ‘C:/Users/l ...

  8. R基础-适合于纯小白

    #说明 文中‘test’均为模拟名称,原始编码为GKB方式###1.R语言介绍#### 偏统计 ###2.Rstudio和R的基本操作#### #2.1查看R语言自带的数据集#### data() # ...

  9. R基础之批处理--R IN ACTION

    1.5 批处理多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果.偶尔,我们可能想要以一种重复的.标准化的.无人值守的方式执行某个R程序,例如,你可能需要每个月生成一次相 ...

随机推荐

  1. convertView

    [convertView] 参考:https://zhidao.baidu.com/question/423895201122905772.html

  2. cenos 7 安装php7

    1. CentOS/RHEL 7.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ...

  3. ActionForward

    一.只有登录才能显示的页面 这是一个很平常的问题,在访问某些网页的时候,只有登录才可以访问,以此保证安全. 实现原理也很简单,就是将一个属性设置在session中.在访问的时候进行判断即可. 例:re ...

  4. centos网速特别慢的最佳解决的方法 - 关闭ipv6

    我使用了centOS,可是发现网速实在是卡得差点儿不能上网,连百度都打不开,可是win却飞快. 后来想到偶然记得有一次看过一段话,说到关闭ipv6,測试来一下,果然有效,关闭来ipv6打开网速飞快. ...

  5. RMAN数据库恢复之恢复归档日志文件

    恢复归档日志文件如果只是为了在恢复数据文件之后应用归档文件,那并不需要手动对归档文件进行恢复,RMAN会在RECOVER时自动对适当的归档进行恢复.单独恢复归档文件一般是有特别的需求,如创建了Data ...

  6. 谈谈javascript的函数表达式及其应用

    我们都知道定义函数的方式有两种,一种是函数声明,另外一种就是函数表达式. 函数声明 语法为:function关键字后跟函数名.例如: function functionName(arg0) { //函 ...

  7. 动态加载Ribbon功能区

    上下文选项卡对新UI的功能提供了极大的推进作用.当用户对某对象执行特定的任务时就会出现特定的选项卡.例如,在Excel中处理图表时,一个上下文选项卡提供用于图表处理的额外选项.本文将介绍创建和执行这些 ...

  8. HDU 1073 - Online Judge

    模拟评测机判断答案 先判断有没有不一样的 有的话再提取出 有效子列 看看有没有错的 #include <iostream> #include <cstdio> #include ...

  9. (原)android的JNI中使用C++的类

    android的JNI代码中可以调用C++的类,但是不能直接调用,要加上一个类似于接口的java类,这个类内部调用C++的类.实际上和接口类直接调用C++中的函数差不多,只是稍微复杂了一点. 1. 写 ...

  10. you can Solve a Geometry Problem too(hdoj1086)

    Problem Description Many geometry(几何)problems were designed in the ACM/ICPC. And now, I also prepare ...