r函数知识总结
1. rbind(), cbind(): 构造、合并vector 或matrix为一个矩阵:cbind(1, 1:10) ----默认列合并, rbind(1, 1:10) ----行合并(or构造)
2. R语言中关于矩阵,向量的一些运算
① 矩阵相乘使用“%*%”,而不是"*", 矩阵与向量,向量与向量相乘最好也是如此;
② 创建一个n*1维的向量,并添加到矩阵中,使用 x0 <- matrix(0, nrow=n, ncol=1), x <- cbind(x0, x); 使用matrix和cbind函数;
③ nrow, ncol函数的参数不能是向量,可以是矩阵、数组、数据框,如y <- c(1,2,3), n <- nrow(y),这样得到的n是NULL,而不是理想的3. 可使用n <- length(y)来求;dim(y)[1]也不可以;
④ 矩阵or向量的转置函数:t(v),其中v可以是向量or矩阵;
⑤ 提示“错误于..., 非整合陈列/参数”, 说明矩阵相乘行列不匹配,可能是运算符用错;
⑥当list,data.frame等类型中元素是数据类型时,看通过as.matrix(x)来做转化成矩阵形式,此时要注意:x[i, ]某一个行的值,是向量形式,即is.vector(x[i, ]) --- TRUE; is.matrix(x[i, ]) --- FALSE; 那么给参数赋值时,要注意,不要使用t(), 如 w <- w + y[i] * t(x[i, ]) (错误), 应改写为 w <- w + y[i] * x[i, ]
3. RTools(R语言编译工具)安装与配置
① 根据R语言版本下载对应的RTools版本,RTools下载地址:http://cran.r-project.org/bin/windows/Rtools/
② 配置环境设置:本人的RTools安装在D:\InstalledProgramingSoftware\Rtools中,这里需要把RTools的bin目录和gcc-4.6.3对应的bin目录设置环境变量。右键-》我的电脑-》高级-》环境变量-》系统变量下面的Path双击-》在值的后面打个分号,D:\InstalledProgramingSoftware\Rtools\bin; D:\InstalledProgramingSoftware\Rtools\gcc-4.6.3\bin(注意:一定要保证在PATH中顺序在D:\cygwin\bin前面)
4. RMySQL 64win7安装过程
① 下载安装与R对应版本的RTools,安装并配置(具体见2);
② 在R的安装目录\R-2.5.3\etc\目录下,创建 Renviron.site文件,并在里面添加MYSQL_HOME=MySQL
的安装路径(我的是:MYSQL_HOME=D:/InstalledProgramingSoftware/MySQL/MySQL Server 5.5, 注意改成反斜杠);
③ 将MySQL安装目录/lib下的libmysql.lib文件拷贝到 mysql/lib/opt 文件夹下,没有opt的,建一个文件夹,同时也将libmysql.dll文件copy到R-2.15.3/bin下面
④ 在R中执行:install.packages("RMySQL", type="source"),最终看到DONE的提示,说明安装成功,可使用Sys.getenv(MYSQL_HOME)验证路径是否正确,使用library(RMySQL)验证是否安装成功。
本人机器(64 win7)上安装后,提示没有安装成功,看了下过程是编译error,经过查找之后,发现之前安装过cygwin,并即将其路径配置到系统变量PATH中,虽然安装RTools时,也将gcc-4.6.3/bin配置到PATH路径上了,但是是放在cygwin后面的,机器总是按照顺序在路径上找,所以首先找到了cygwin,用它来编译源文件包,所以出错了,Solution:将gcc-4.6.3/bin 放置在cygwin前面,这样在执行④,就OK了~
5. R语言 函数问题
① R函数的返回值可以是任何对象,或复杂的对象。IF函数有多个返回值,可以把它存储在一个列表或其它容器变量中,返回。 例如,线性回归学习算法(梯度下降)要返回损失函数J和参数theta, mylist <- list(J, theta), return(mylist); 其中mylist[[1]] ----> J;
② 函数都是对象,因此
(1). 函数可以作为其他函数的参数,例如
f1 <- function(x) return(a+b);
f2 <- function(x) return(a-b);
g <- function(h, a, b);
g(f1, 3, 2) g=5;
g(f2,3,2) g=1;
(2). 因为函数是对象,所有可以在函数所组成的列表上做循环,比如在一幅图上绘制若干个函数的图形,举例:
g1 <- function(x) return(sin(x))
g2 <- function(x) return(sqrt(x^2 + 1))
g3 <- function(x) return(2*x - 1)
plot(c(0,1), c(-1, 1.5))
for (f in c(g1, g2, g3)) plot(f, 0, 1, add=T)
③ 通过赋值来改变函数的主体, 举例:
g <- function(h,a,b) h(a,b)
body(g) <- quote(2*x + 3)
④⑤
6. R语言编程:逻辑元素问题
(1). R中,如果提示"错误于if(...) {: 需要TRUE/FALSE的地方不可以用缺少值",
解释错误:if(condition),其中condition处只能是TRUE/FALSE,不能是其它值,由于参与逻辑运算符的变量,存在缺失值NA,导致了condition出现了NA,才会提示错误;
出现错误的可能:① 参与计算的数据存在缺失值;② 参与运算的向量/矩阵/数组, 下标出界;
解决方案:详细检查数据是否存在缺失值,进行弥补,可能是由于导数导入的问题;插入必要的print语句,检查下标出界问题;
(2) 当理所当然的认为 矩阵 %*% 矩阵相乘时,可能会提示以下错误:错误于x %*% ww : 需要数值/复数矩阵/矢量参数. 这是因为运算数的数据类型可能不是矩阵(徒有其表),可能是list,dataframe等形式,此时需要做类型转换(当运算数的每个元素数据类型相同时),如 x <- as.matrix(x),当然也有可能是行列出了问题;
7. 随机抽样函数
(1). R中,将数据集中record/example的原本顺序打乱,如何实现?sample()
在数据处理or验证数据中record顺序对算法的影响时,需要将使用随机数生成函数,将原本数据打乱,R中可使用example()函数:
x <- 1:10
sample(x) --- > 8 3 2 6 9 10 4 5 1 7 (生成x内的数的乱序)
sample(c(0,1), 100, replace=TRUE) ---> 生成100个0和1的数(伯努利抽样)
sample(x, size, replace = FALSE, prob = NULL) # x为含1个or多个元素的容器,size表示从x中随机抽取数,replace表示是否放回(可重复)
sample.int(n, size =n, replace = FALSE, prob = NULL); n表示可以抽取的是1:n中的数,size表示抽取的个数,replace表示是否放回;
详细请 ?sample
(2). 当然runif(), rnorm()可以用作浮点数/正态分布数据的随机生成,当然还有好多满足某种概率分布生成数的函数....
8. 排列组合
(1). pregmisc包,permutations(n= , r = ) # 排列函数,列出A(n,r)中所有排列; combinations(n= , r= ) #组合函数,列出C(n,r)中所有组合;
(2). choose(n,r) # 计算组合数,如choose(6,3) ---> 20; factorial(n) # 计算阶乘,n! = n*(n-1)*....*1; 二者组合可计算排列数C(n,r) = n! / r! ;
(3).
r函数知识总结的更多相关文章
- R(一): R基础知识
R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...
- 【转】R语言知识体系概览
摘要:R语言的知识体系并非语法这么简单,如果都不了R的全貌,何谈学好R语言呢.本文将展示介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言. 最近遇到很多的程序员都想转行到数据分析,于是就开 ...
- python: 基本数据类型 与 内置函数 知识整理
列表 list.append(val) #末尾追加,直接改变无返回 list.inert(2,val) #插入到指定位置 list.extend(mylist1) #list会被改变 list2=li ...
- Sass控制命令及函数知识整理
2017-07-07 20:17:17 最底部附结构图(实在是结构图太长了没办法) 2017-06-22 09:11:43 一.Sass的控制命令 1.@if语句 @if 指令是一个 SassSc ...
- js函数知识
1.函数基本知识 通过函数可以封装任意条语句,在任何地方调用,js中用function关键字来声明, //基本格式,函数名,传递参数,代码块 function functionName(arg0,ar ...
- 关于在C++中调用R函数以及RCpp使用
最近因为项目要用到,所以在想办法把R语言用到C++中. 网上查了看到有一个Rcpp的工具.所以在这里总结一下. 现在能想到的几种在C++中调用R语言的方法如下: 1. 使用Rcpp R高级编程技巧及R ...
- R函数详解
字符串连接函数paste 1.字符串连接:paste(..., sep = " ", collapse = NULL)sep表示分隔符,默认为空格.collapse表示如果不指定值 ...
- 【前端】 在前端利用数学函数知识+box-shadow解波浪图形
序 今天正在刷数学函数相关题目,刷到了下面这篇文章,哇哦-有意思. 利用cos和sin实现复杂的曲线.传送门在下面. CSS 技巧一则 -- 在 CSS 中使用三角函数绘制曲线图形及展示动画 正巧在复 ...
- python函数知识五 推导式和内置函数一(了解)
17.推导式: 推导式:将for循环多行变成一行 list推导式:[] #普通模式 print([i for i in range(20)]) #循环模式 #[变量 for i in range(20 ...
随机推荐
- JMeter ----内置函数列表
Jmeter有两种类型的函数: 用户定义的静态值(或变量) 内置函数 用户定义的静态值允许用户定义变量时被替换为静态的值测试树编译并提交运行.需要注意的是,变量目前无法嵌套,即${Var${N}}不起 ...
- DCDC纹波小实验
关于使用示波器測试纹波的注意事项 使用示波器的AC耦合方式測量 因为示波器的头套easy引人噪声,因此在測试前必需把探头的头套去掉 因为电源的高频噪声非常easy通过小电感就能够滤掉,因此更关心的是中 ...
- 从一到面试题了解js异步机制:setTimeout 和 Pronmise
1.毫无疑问setTimeout是最晚输出的 2.请无视undefined,这是浏览器的返回值. 3.new Promise中并不是异步,而.then()后才是异步.
- 开发Yii2过滤器并通过behaviors()行为调用(转)
在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors() { ...
- Securecrt emacs/vi 代码无法高亮、无颜色
无法高亮: 这是因为.bashrc中没有 export term=linux 最后,代码恢复正常:
- 关于K8s集群器日志收集的总结
本文介绍了kubernetes官方提供的日志收集方法,并介绍了Fluentd日志收集器并与其他产品做了比较.最后介绍了好雨云帮如何对k8s进行改造并使用ZeroMQ以消息的形式将日志传输到统一的日志处 ...
- java Webservice(一)HttpClient使用(一)
1.拳头之Get/Post拳头是最基本的一重武器,也是最重要的,好比练武之人必须先扎稳马步. java 代码 HttpClient httpclient=new HttpClient();//创建一个 ...
- [Python]南邮OJ代码备份爬虫
之前看过Python学习的经验,说以project为导向学习. 自己分析了一下,一般接触Python的都有一定的其它语言基础,对于程序设计的基本逻辑,语法都有一个大概的了解.而Python这样的脚本语 ...
- Scala之集合Collection
概述 Scala的集合类能够从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟载入集合 (Eager and delayed ev ...
- OOM问题定位方法
1. 背景 线上内存OOM问题是最难定位的问题,最常见的原因: (1)本身资源不够 (2)申请的太多 (3)资源耗尽 某服务器上部署了Java服务,出现OutOfMemoryError,请问有可能是什 ...