• [R]第二节 对象介绍与赋值运算


    前言

    • R 创建、控制的实体(entity)称为对象(object)。
      • 向量(vector)
      • 矩阵(matrix)
      • 数组(array)
      • 数据框(data frame)
      • 列表(list)
      • 因子(factor)
      • 函数(function)
      • 通过以上实体定义的更为一般性的结构(structures)

    数据的存储形式

    • R语言进行数据存储
      • 选择一种合适的数据结构
      • 将已有的数据输入或者导入到这个数据结构中
    • 通常看到的数据结构(如Excel):

    2.1 向量-向量元素必须相同类型

    2.1.1数值向量

    • 向量赋值

    > x<-c(1,2,3,4,5)

    > y<-c(1:5)

    > z<-seq(from=1,by=1,to=5)

    > m=c(1:5)

    > assign("n",c(1:5))

    > p<-c(x,88,y)

    > q<-rep(c(88,99),3)

    • "<-"是赋值符号。在多数情况下,可用"="替代。函数c()是赋值语句,其返回值为向量。

    • 也可以采用以下语句进行赋值。

    > c(1:5)->k

    • 若不将采用赋值符号,则结果直接显示在屏幕上。

    > 1/x

    • 引用元素

    > x<-c(1,2,4,5) #赋值

    > x[1] #引用第1个元素

    > x[c(1,4)] #引用第1个和第4个元素

    > x[-c(1,4)] #删除第1个和第4个元素

    > x[x>3] #引用大于3的元素

    > is.vector(x) #判断对象是否为向量

    2.1.2字符向量

    • 元素必须用双引号或者单引号
    • 当字符向量以没有引号的形式显示时,缺失值以形式显示
    a<-c("a","b",NA)
    a
    print(a,quote=F) #quote=F用于将字符向量的双引号去掉
    
    #产生字符序列
    idList<-paste("id",1:10,sep="-")
    #一个简单的paste()将多个元素作为输入,
    #并将这些输入连接到一个字符串中。 
    #元素将以空格分隔作为默认选项。 
    #但是您也可以使用'sep'参数更改分隔符值。

    • 取出第二个到第三个字符
    substr("12345",2,3)

    • 替换第二个到第三个字符
    x<-"12345"
    substr(x,2,3)<-"00"

    substr(x,2,3)<-"1"

    所以我们可以看到,如果后面赋给前面字符串中多个引用的变量,一个"1"不能赋给"2"和"3"两个位置的变量,所以只能给2位置的变量赋值1.

    • 判断字符元素的长度
    nchar(x)

    • 分隔字符
    strsplit("ab cd ef",split=" ")

    • 转换成大小写字符
    toupper(x) #大写
    tolower(x) #小写

    x<-c("this","isis","an","apple")
    • 返回匹配元素位置
    grep("is",x)
    [1] 1 2
    • 返回等长的数值向量。不匹配则-1,匹配则为第一个匹配的位置
    regexpr("is",x)
    [1] 3 1 -1 -1

    • 替换字符,仅替换元素第一个匹配值
    sub("is","QQ",x)
    [1] "thQQ","QQis","an","apple"

    • 替换字符,替换元素所有匹配值
    gsub("is","QQ",x)
    [1] "thQQ","QQQQ","an","apple"

    2.1.3缺失值

    • 当一个元素在统计的时候不可获得(not available)或者元素是缺失值(missing value),则相关位置会被保留并赋予一个特定值NA。
    • 任何含有NA数据的运算结果都将是NA
    x<-c(1:100,NA)
    res1<-sum(x)
    res2<-sum(x,na.rm=T)

    • 数值运算会产生另一种缺失值NaN,表示非数值(Not a Number)。
    res1 <- 0/0
    res1 <- Inf - Inf

    • is.na()判断NA和NaN都是TRUE。
    • is.nan()仅对NaN判断为TRUE
  • 相关阅读:
    【设计模式】代理模式
    go中高并发下的通信方式:channel管道的底层原理
    外包干了四年,人直接废了。。。
    【自学开发之旅】基于Flask的web开发(一)
    [管理与领导-113]:IT人看清职场中的隐性规则 - 10 - 看清人的行动、行为、手段、方法背后的动机与背景条件
    买极米NEW Z8X的我后悔了,换成当贝F3 Air可真香
    学习java的第四十二天,GUI编程的基础认知
    C++初级----list(STL)
    一文了解tcp/ip协议的运行原理
    第二章 字与段的总结
  • 原文地址:https://blog.csdn.net/qq_63511424/article/details/127876694