zoukankan      html  css  js  c++  java
  • R语言基本操作函数---变量的基本操作

    1.变量变换
            as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x),...转换变量类型;使用如下命令可得到全部列表,methods(as)
            factor():将一个向量转化为一个因子

    2.变量信息
            is.na(x),is.null(x),is.array(x),is.data.frame(x),is.numeric(x),is.complex(x),is.character (x),...检验变量的类型;使用如下命令得到全部列表,methods(is)
            length(x):x中元素的个数
            dim(x):查看变量的维数;重新设置的维数,例如dim(x)=c(3,2)
            dimnames(x):重新设置对象的名称
            nrow(x):行的个数
            ncol(x):列的个数
            class(x):得到或设置x的类;class(x)<-c(3,2)
            unclass(x):删除x的类
            attr(x,which):得到或设置x的属性which
            attributes(obj):得到或设置obj的属性列表
            fix,edit:对数据框数据进行表格形式的编辑
    3.数据选取和操作
            which.max(x):返回x中最大元素的指标
            which.min(x):返回x中最小元素的指标
            rev(x):翻转x中所有的元素
            sort(x):升序排列x中的元素;降序排列使用:rev(sort(x))
            cut(x,breaks):将x分割成为几段(或因子);breaks为段数或分割点向量
            match(x,y):返回一个和x长度相同且和y中元素相等的向量不等则返回NA
            which(x==a):如果比较操作为真(TRUE),返回向量x的指针
            choose(n,k):组合数的计算
            na.omit(x):去除缺失值(NA)(去除相关行如果x为矩阵或数据框)
            na.fail(x):返回错误信息,如果x包含至少一个NA
            unique(x):如果x为向量或数据框,返回唯一值
            table(x):返回一个由x不同值个数组成的表格(通常用于整数或因子),即频数表
            subset(x,...):根据条件(...选取x中元素,如x$V1<10);如果x为数据框,选项select使用负号给出保留 或去除的变量 subset(x, subset, select,         drop = FALSE, ...)
            sample(x,size):不放回的随即在向量x中抽取size个元素,选项replace=TRUE允许放回抽取
            prop.table(x,margin=):根据margin使用分数表示表格,wumargin时,所有元素和为1
    * R数据的创建与索引
    ** 向量的操作
    *** 向量的创建
    **** c(...)
    为concatenate的缩写;
    常见的将一系列参数转化为向量的函数,通过recursive=TRUE降序排列列表并组合所有的元素为向量
    *** from:to产生一个序列
    ":"有较高的优先级;1:4+1得到"2,3,4,5"
    *** seq() 产生一个向量序列
    seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)
            其中length.out可简写为len。
    *** rep() 重复一个对象
            rep(x,times):x是要重复的对象(例如向量c(1,2,3)),times为对象中每个元素重复的次数(如times=c(9,7,3)就是将x向量的1重复9次,2重复7次,3重复3次)。
            除了上述主要的用法之外,还有一种特殊的用法:rep(x,times)重复x  times次;使用each=来重复x元素each次;rep(c(1,2,3),2)得到1 2 3 1 2 3;rep(c(1,2,3),each=2)得到1 1 2 2 3 3。
    *** 利用向量的索引实现定义分段函数
            利用改变部分元素值的技术与逻辑值下标结合,可以定义向量的分段函数,例如,要定义
             
    可以用如下的语句去实现:
    > x = c(-2.3,4,-5,7);
    > y = numeric(length(x));
    > y[x<0] = 1 - x[x<0];
    > y[x>0] = 1 - x[x>0];
    > y
    [1]  3.3 -3.0  6.0 -6.0
    4.1.数组(包含矩阵、向量)创建
    c(...)
    常见的将一系列参数转化为向量的函数,通过recursive=TRUE降序排列列表并组合所有的元素为向量
    from:to产生一个序列
    ":"有较高的优先级;1:4+1得到"2,3,4,5"
    seq() 产生一个向量序列
    seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)
            其中length.out可简写为len。
    rep() 重复一个对象
            rep(x,times):x是要重复的对象(例如向量c(1,2,3)),times为对象中每个元素重复的次数(如times=c(9,7,3)就是将x向量的1重复9次,2重复7次,3重复3次)。
            除了上述主要的用法之外,还有一种特殊的用法:rep(x,times)重复x  times次;使用each=来重复x元素each次;rep(c(1,2,3),2)得到1 2 3 1 2 3;rep(c(1,2,3),each=2)得到1 1 2 2 3 3。
    matrix(...)
    创立矩阵   matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
    array(x,dim=...)
    产生由x组成的数组;使用类似dim=c(3,4,2)指定维数;如果x长度不够,则x自动循环
    data.frame(...)
    创建数据框,变量可能被命名或未被命名
    data.frame(v=1:4,ch=c("a","b","c","d"),n=10);
    相对短的向量会被填充到最大向量长度。                                
    注意数据框中各个属性的元素个数必须相同
    list(...)
    创建一个由变量组成的列表,变量可能被命名;
    list(a=c(1,2),b="hi",c=3i)
    factor(x,levels=) 把向量x编码称为因子       
    factor(x = character(), levels, labels = levels,exclude = NA, ordered = is.ordered(x))
    gl() 产生因子变量
    gl(n,k,lenth=n*k,labels=)
    通过指定水平方式产生水平因子;k为水平的个数,n为重复的次数
    rbind() cbind()
            rbind(...)以行的形式组合矩阵,数据框,或其它
            cbind(...)以列的方式组合,其他同rbind()
    数据切割和分离
            向量指标
                    x[n]:第n个元素
                    x[-n]:除了第n个元素的x
                    x[1:n]:前n个元素
                    x[-(1:n)]:第n+1至最后的元素
                    x[c(1,4,2)]:指定元素
                    x["name"]:名为"name"的元素
                    x[x>3]:所有大于3的元素
                    x[x>3 & x<5]:区间(3,5)的元素
                    x[x%in%c("a","and","the")]:给定组中的元素
            列表指标
                    x[n]:列表显示元素n
                    x[n]:列表的第n个元素
                    x["name"]:名为"name"的元素
                    x$name :同上
            矩阵指标
                    x[i,j]:下表为(i,j)的元素
                    x[i,]:第i行
                    x[,j]:第j列
                    x[,c(1,3)]:第1和3列
                    x["name",]:名为"name"的行
                    x$name :同上
            数据框指标
                    x["name"]:列明为"name"的列
                    x$name :同上
    4.2.R数学函数
    4.2.1.泛用函数apply:
            描述:让不同的函数作用数组array不同的边。
            用法:apply(X, MARGIN, FUN, ...)
            参数描述:
                    X为一数组array,当然包括矩阵。
                    MARGIN:为一向量,它指定函数要作用的下标。例如对一个矩阵来说,1代表行,2代表列,而c(1,2)代表行和列。
                    FUN作用于数组array上的函数。此函数可以是自己编写的。

            注意:
                    当X时一个data.frame时,而不是array时,函数apply就会强制性的通过as.matrix或as.array将其转化为maxtrix或array。
            例子:
                    ## Compute row and column sums for a matrix:
                    x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
                    col.sums <- apply(x, 2, sum)
                    row.sums <- apply(x, 1, sum)
    4.2.2.基本符号:
            + :加  
            - :减   
            * :乘   
            / :除    
            ^ :幂
    4.2.3.三角函数与其他基本数学函数
            sin,
            cos,
            tan,
            asin,
            atan,
            atan2,
            log,
            log10,
            exp,
    max(x):
            当x为一向量时,返回x中最大的元素。
            当x为矩阵时,返回矩阵中所有元素的最大值。当要返回矩阵x每行或每列的最大值时,可以使用apply函数(apply(X, MARGIN, FUN, ...)),其中MARGIN表示要作用的方式,1代表行,2代表列,c(1,2)代表行和列;例如apply(data,MARGIN=1,max)
            当x为data.frame时,1仍然代表行,2仍然代表列。
            当x为数组array时,1仍然代表行,2仍然代表列,其它更高维数用相应的编号数字来表示,如3就可以代表array的页。
            其它详细情况参考apply函数
    min(x):返回x中最小的元素,同max
    rev(x) 翻转x中的所有元素
    sort(x) 升序排列x中的元素;降序排列使用rev(sort(x)),要得到排列的小标用order()
    choose(n,k) 组合数计算
    which()  返回满足条件的下表
    sample(x,size) 不放回的随机在向量x中抽取size个元素选项,replace+TRUE允许放回抽样
    rank():计算向量的秩
    range(x):返回c(min(x),max(x))
    sum(x):x中各元素的加和
    diff(x):向量x的差分
    prod(x):x中元素的连乘积
    mean(x):x的均值
    median(x):x的中位数
    quantile(x,probs=):满足给定概率的样本分位数(默认为0,0.25,0.75,1)
    weight.mean(x,w):加权平均,w即为weight,即权值。
    rank(x):x中元素的秩
    var(x):向量x的样本方差;如果x是矩阵或数据框,协方差矩阵将被计算 
    cor(x):如果x是矩阵或数据框,相关系数矩阵将被计算
    sd(x):x的标准差;sd(x)=sqrt(var(x))
    var(x,y) or cov(x,y):x和y间的协方差;如果x,y为矩阵或数据框,返回x和y各列的协方差
    cor(x,y):x和y的线性相关系数;或者相关矩阵,如果x和y为矩阵或者数据框
    round(x,n):x的约数,精确到n位
    log(x,base):计算x以base为基的对数,默认基为exp(1)
    scale(x):如果x是一个矩阵,则中心化和标准化数据;若只标准化数据,则使用选项center=FALSE,若只 中心化使用scale=FALSE(默认center=TRUE,        
            scale=TRUE)
    pmin(x,y,...):x,y相比较小者,组成新的向量
    pmax(x,y,...):x,y相比较大者,组成新的向量
    Re(x):复数的实部
    Im(x):复数的虚部
    abs(x):绝对值
    Arg(x):复数角度(in radians)
    Conj(x):共轭复数
    fft(x):数组x的快速傅里叶变换
    mvfft(x):矩阵x的每一列的傅里叶变换
    factorial():计算n!
    cumsum():cumulative sums
    cumprod():cumulative products
    D(expression(exp(x^2)),"x") :求导
    integrate(function(x) x^2,0,1):积分
    注意:大多数数学函数使用逻辑参数na.rm=FALSE来指定是否移除缺失值(NA)
    4.3.R字符操作
    str_c(..., sep = "", collapse = NULL):转化为字符后连接向量;seq=为分割界限(一个空格为默认);选择collapse=可以分 割"collapse"结果
    str_sub(string, start = 1L, end = -1L) :提取字符向量的子字段;

    同样可以赋值,使用str_sub(string, start = 1L, end = -1L) <- value 替换子字符串
    str_split(x,split):在split的位置分割x,例如:
    x<-str_split("An R matrix corresponds to the mathematical concept"," ");
    length(x[1]);   #注意:对象被存放在列表x的第一项中,可以用x[1]提取
    str_to_lower(x):转化为lowercase
    str_to_upper(x):转化为uppercase

    x%in%table:table中匹配x元素位置组成的向量,返回值为逻辑值

    str_match(string, pattern):pattern匹配字符,并返回对应的字符string

    str_extract: 从字符串中提取匹配字符
    str_extract(shopping_list, "\d") # 提取数字 #提取匹配模式的第一个字符串
    str_extract(shopping_list, "[a-z]+") #提取字母

    str_detect(string, pattern) 匹配字符串的字符-- 检测函数,用于检测字符串中是否存在某种匹配模式

    # 检查字符串向量,是否以a为开头 :str_detect(val, "^a")

    nchar(x):字符的个数

    点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图

  • 相关阅读:
    mybatis 错误 Invalid bound statement (not found)
    Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
    bug 记录 Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans
    解决:The Tomcat connector configured to listen on port 8182 failed to start. The port may already be in use or the connector may be misconfigured.
    jquery validate 验证插件 解决多个相同的Name 只验证第一个的方案
    phpStorm+xdebug调试(php7.3)
    小程序视频多个视频播放与暂停
    CSS实现单行、多行文本溢出显示省略号(…)
    Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.
    idea自动在文件头中添加作者和创建时间
  • 原文地址:https://www.cnblogs.com/nxld/p/6089166.html
Copyright © 2011-2022 走看看