同时使用几种科学计算工具是怎样一种感受 Fork me on GitHub

同时使用几种科学计算工具是怎样一种感受

2015-09-01 23:23:00   Write By JSong

序

用知乎体来回答这个问题,持续整理中

先假设啥好的软件都没有,我们先来想想一个优秀的科学计算软件需要哪些东西。

  1. 编程简洁但又能进行一定的自由定制,比如写一个自己行业所需要的工具箱之类的

  2. 速度快,能适应越来越大的数据流

  3. 具有可视化功能,可以绘制丰富的图表

那应该怎么设计软件?

  1. 设计各种高级的数据类

    1). 支持字符串和数组的向量类型,在MATLAB中两者是分开来的

  2. 数据类的基本操作或者函数,初始化,索引,切片,逻辑索引,逻辑判断,赋值,

  3. 简单的数据生成,如数列,特殊矩阵等

  4. 控制流

  5. 绘图

  6. 丰富的函数库,线性代数,概率,图像处理,IO,时间序列,机器学习常用算法

  7. 外部接口,混合编程

前言

1、 一个不推荐自己编程,高度优化的面向对象的静态统计语言 2、因为其在参数使用上采用=赋值,所以通常的对象赋值则用符号 <-

数据结构

最底层的数据结构为:字符,数字,整数,逻辑,复数

第一层:向量,列表,因子 第二层(class):矩阵,数据框等 向量:同种数据格式,numeric, logical, char) demo :x<- c(1,2,3,4) x<-c('M','N') 矩阵:带size的向量 demo: dim(x)<-c(2,3)

             matrix(c(1:10),nrow=2,ncol=5)

列表:类似于元胞数组,对象的集合 demo: list(c(1:10),"M") 数据框: 行必须相同的list,统计常用的一种格式,类似于SPSS,数据库中的表 demo: data.frame(a,b,c) 因子 : factor

软件是面向对象编程的,每一个这样的向量就是一个对象,一些固有属性如下 length, names, mode(底层/一层), class, str dim head tail

字符串操作 toupper, tolower,nchar,substr,substring(取多组),paste,grep,strsplit

系统内存操作 getwd,setwd,ls,rm,list.files

数据I/O

文件读取 read.table 读取类似于表格的文件,后最不限制,支持分隔符,支持表头 read.csv,readHTMLTable,SQL(需要RMySQL) 底层的就是,scan(单元),readlines(行) 最最底层的,file,gzfile,zfile,open load: 导入R格式的数据,后缀为.Rdata

文件输出 R控制台: print, cat (好用一些,内部可重定向) cat(data,file=filename,append=T) 文件:sink:适合脚本的输出,由一对命令控制,sink(filename) ...... sink() 高级:write.csv,save

索引与查找

向量索引 用[],[1:5,] [T,F,T],支持逻辑索引 列表索引 用[[]], 类似于元胞,一个中括号返回的是子列表。两个返回的才是元素 名称索引 用\( 如data.frame里,x\)a

逻辑查找 x<-x[x>1] #记住圆括号一定是用于函数的

NA查找 is.na 这是一个函数,可以控制向量里面的NA值 但是在一些复杂的数据结构中不宜删除NA值,但其又不能用于统计,于是很多函数有这样一个参数,na.rm=TRUE

概率函数

d=密度函数 p=分布函数 q=分位数函数 r=生成随机数函数

控制流

apply:将函数应用到数据的某一个维度上 lapply/sapply: 将函数应用到列表上

机器学习

1、主成分分析

princomp(x,)

hclust(d, method = "complete", members=NULL)

2、典型相关分析

用于分析两组变量之间的相关性

cancor(x, y, xcenter = TRUE, ycenter = TRUE)

3、mlogit 多类别逻辑回归

4、e1071中的svm

消息

  • 1、更换为国内评论系统
  • 2、QTT工具箱已更新至1.0版本

访问量