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). 

时间: 2024-10-18 03:34:48

r函数知识总结的相关文章

R函数详解

字符串连接函数paste 1.字符串连接:paste(..., sep = " ", collapse = NULL)sep表示分隔符,默认为空格.collapse表示如果不指定值,那么函数paste的返回值是自变量之间通过sep指定的分隔符连接后得到的一个字符型向量:如果为其指定了特定的值,那么自变量连接后的字符型向量会再被连接成一个字符串,之间通过collapse的值分隔 (1) paste函数把它的自变量连成一个字符串,中间用空格分开,如 > paste("Hel

关于在C++中调用R函数以及RCpp使用

最近因为项目要用到,所以在想办法把R语言用到C++中. 网上查了看到有一个Rcpp的工具.所以在这里总结一下. 现在能想到的几种在C++中调用R语言的方法如下: 1. 使用Rcpp R高级编程技巧及Rcpp的介绍 Rcpp的前世今生 Rcpp快速入门 Rcpp简明入门 Exposing C++ functions and classes with Rcpp modules Rcpp: Seamless R and C++ Integration Rcpp CRAN usage Writing R

Sass控制命令及函数知识整理

2017-07-07  20:17:17 最底部附结构图(实在是结构图太长了没办法) 2017-06-22  09:11:43 一.Sass的控制命令 [email protected]语句 @if 指令是一个 SassScript,它可以根据条件来处理样式块,如果条件为 true 返回一个样式块,反之 false 返回另一个样式块. 在 Sass 中除了 @if 之,还可以配合 @else if 和 @else 一起使用. 示例::控制一个元素隐藏或显示的代码, 原理:定义一个混合宏,通过 @

js函数知识

1.函数基本知识 通过函数可以封装任意条语句,在任何地方调用,js中用function关键字来声明, //基本格式,函数名,传递参数,代码块 function functionName(arg0,arg1,arg2,--,argN){ statements } //实例 function sayHi(name,message){ console.log("hello "+name+","+message) } sayHi("double",&qu

python函数知识五 推导式和内置函数一(了解)

17.推导式: 推导式:将for循环多行变成一行 list推导式:[] #普通模式 print([i for i in range(20)]) #循环模式 #[变量 for i in range(20)] print([i+1 for i in range(10)]) #筛选模式 #[变量(加工后) for i in range(20)] print([i for i in range(20) if i % 2 == 1]) 生成器表达器:() #普通模式 print((i for i in r

R函数理解整理

R语言melt/cast.一个图搞定数据整合和拆分 ? ? R语言数据处理方法~小结(转) ? ? 来自 <https://www.cnblogs.com/payton/articles/5986496.html> 文章目录 1. R自带函数 2. reshape2数据重构 3. dplyr 4. tidyr 5. 字符串处理 1. R自带函数 1.1 转置 使用函数t()可对一个矩阵或数据框进行转置,对于数据框,行名将变成变量(列)名. 数列array进行维度转换 aperm 1.2 整合数

JS杂谈系列-函数知识、函数模式

函数,函数,function,function,go go go! 创建函数: 第一种:function aa(){alert(1)}; 第二种:var aa=function(){alert(1)}; 其实对于使用没有太大的区别,第一个是用函数关键字创建,第二个是创建变量,然后赋值为一个函数. 同样我们还可以创建匿名函数 function(){alert(1)}; 函数的里面可以传递参数arg function aa(arg){alert(arg)}; function aa(arg1,arg

函数知识(长路漫漫,任重道远)

(第一周学习计算机基础,多年的思维习惯正在努力慢慢改变,知识点主要困于循环与函数,还得多加练习,既然是自己选择的当然得站到最后!) 函数:具有独立功能,能通过名称重复使用的代码. 参数:完成一件事需要知道的额外条件.参数仅在函数体中有效. 返回值:完成后产生的结果. 函数声明的语法:static 返回类型 函数名(参数列表)      这里的参数列表为形参列表 无法回类型→void:声明写在类中,不能在主函数内:主函数是一个特殊的函数. 函数调用的语法:函数名(参数列表) 这里的参数列表为实参列

week3 函数知识整理

一.函数的定义: 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开... 空格 为了将def关键字和函数名分开 函数名:必须由字母下划线数字组成,不能是关键字,不能是数字开头,函数名还是要有一定的意义能够简单说明函数的功能 括号:是必须加的 注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行.以增强代码的可读性. 调用:就是 函数名() 要记得加上括号 def 函数名(参