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 ...
随机推荐
- python学习笔记013——包package
1 包(模块包)package 1.1 包的定义 包是将模块以文件夹的组织形式进行分组管理的方法 1.2 作用 分类管理,有利于防止命名冲突 可以在需要时加载一个或部分模块,而不是全部模块 mypac ...
- Python rpartition() 方法
描述 Python rpartition() 方法用来根据指定的分隔符将字符串进行分割. 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符前面的子字符串,第二个为分隔符本身,第三个为分 ...
- python标准库介绍——26 getopt 模块详解
==getopt 模块== ``getopt`` 模块包含用于抽出命令行选项和参数的函数, 它可以处理多种格式的选项. 如 [Example 2-23 #eg-2-23] 所示. 其中第 2 个参数指 ...
- 免费申请 Github 私有仓库--学生和教育人士的福利
免费申请 Github 私有仓库 -学生和教育人士的福利 Github 是全球知名的软件项目托管网站.在 Github 创建私有仓库是需要收费的,收费方案有多种,费用最小的方案是每月 7 美元的“微型 ...
- 使用matlab处理图像的基础知识
MATLAB基本函数一 矩阵运算 1.基本算数运算(加减乘除) + -运算要求矩阵维数相同,例m*n * /运算,例A=B*C,B矩阵是m*n矩阵,B是n*p矩阵,则A是m*p矩阵 A/B相当于A*i ...
- leetcode-000-序
一直以来学习的都是些理论,编程一直用的也是MATLAB,其他语言很少涉及.希望自己弥补这一块短板,时间初步定在五月底,拿出半个月时间学习Python,学多少算多少. 直接从leetcode开始: ar ...
- REST技术第三步 @BeanParam的使用
我简介下rest中@BeanParam的使用 我们来做一个计算加法的服务. 提供两个參数a和b,计算出a+b. 參数都在URL里 就是类似这样的效果. 这次用上@BeanParam 首先写个POJO来 ...
- 【Android】3.21 示例21—兴趣点收藏功能
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 简介:介绍如何创建.管理本地收藏的兴趣点数据 详述: (1)新建本地点收藏: (2)查看已收藏本地点: (3) ...
- Linux下C++连MySQL数据库
1.查看本地有没有安装mysql,命令就是mysql,如果有这个命令就表示安装了mysql数据库软件.如果没有就自行安装. MySQL-server-4.0.16-0.i386.rpm MySQL-c ...
- C++ 智能指针 shared_ptr
今天晚上去旁听了C++高级编程的课,其中提到智能指针.第一反映还以为是auto_ptr呢,一听才知道是share_ptr这个.哦,原来是C++11特性.大致的原因是auto_ptr有一点缺陷,而sha ...