zoukankan      html  css  js  c++  java
  • 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:InstalledProgramingSoftwareRtools中,这里需要把RTools的bin目录和gcc-4.6.3对应的bin目录设置环境变量。右键-》我的电脑-》高级-》环境变量-》系统变量下面的Path双击-》在值的后面打个分号,D:InstalledProgramingSoftwareRtoolsin; D:InstalledProgramingSoftwareRtoolsgcc-4.6.3in(注意:一定要保证在PATH中顺序在D:cygwinin前面)

    4. RMySQL 64win7安装过程

    ① 下载安装与R对应版本的RTools,安装并配置(具体见2);

    ② 在R的安装目录R-2.5.3etc目录下,创建 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). 

  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/awishfullyway/p/6601465.html
Copyright © 2011-2022 走看看