[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字符向量

  • 元素必须用双引号或者单引号
  • 当字符向量以没有引号的形式显示时,缺失值以<NA>形式显示
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

猜你喜欢

转载自blog.csdn.net/qq_63511424/article/details/127876694