R语言学习笔记——向量

说明:报了学校的课《R语言与统计分析》,随手分享一下课堂笔记。最近比较忙所以就不整理了直接发叭,一切随缘,如果感兴趣的话可以自己测试代码输出结果。

  • 直接创建向量
    x<-1:5
    x<-5:-1
    x<-c(88,5,12,13)

  • 用已有变量创建新向量
    x<-c(88,5,12,13)
    y<-c(x[1:3],1,168,x[4])
    y

  • 先声明再填写向量元素
    x<-vector(length=2)
    x[1]=5
    x[2]=12
    x

  • seq函数生成向量,指定起始、步长or长度
    seq(from=1,to=10,by=3)
    seq(from=1,to=10,length=3)

  • rep函数重复向量,指定重复次数或者每个元素重复个数
    rep(2,3)
    rep(c(2,3,4),2)
    rep(1:3,each=2)

  • 获取向量长度
    length(x)

  • 空向量,NULL,长度为0
    x<-c()
    length(x)

  • 由向量生成矩阵,按列排放各个元素
    x<-1:6
    x<-matrix(x,2,3)
    x

  • 索引元素
    x<-c(88,5,12,13)
    x[4]  # 索引一个元素
    x[1:3]  # 连续索引多个元素
    x[c(1,3)]  # 索引由向量指定位置的元素
    

  • 条件索引/筛选
    x<-c(1,4,6,8,9,10)
    x[x>5]  # 输出x向量中大于5的元素值
    which(x>4)  # 输出x向量中大于5的元素下标
    x<-c(1:2,NA,3:4)
    x[x>2]  # 如果x向量中含有缺失值NA,则输出结果含有NA
    subset(x,x>2)  # 使用subset函数,输出结果不含NA

  • 负数索引:删除向量元素,但是原向量不变
    x<-c(88,5,12,13)
    x[-2]
    x[-1:-3]
    x

  • 按名称索引
    x<-1:3
    names(x)<-c('a','b','c')
    x['c']

  • 循环补齐原则
    c(1,0,4)+c(5,3,6,7,9)
    x<-matrix(1:6,3,2)
    x
    x+c(1,2)

  • 运算符是函数
    1+6
    "+"(1,6)
    1/6
    "/"(1,6)

  • 向量间的运算是各个元素间的运算
    x<-c(1,5,0)
    y<-c(5,-2,1,2,4,5,2)
    z<-x*y  # 循环补齐
    z

  • 【易错】运算符的优先级:() > : > -
    # 注意 : 的优先级是大于+-的,这在写循环语句、连续索引元素时容易犯错
    
    i<-10
    1:i-1  # 1:i-1 = (1:i)-1 先生成1:10向量,再使各元素-1,输出0:9
    length(1:i-1)  # 输出10
    
    i<-10
    1:(i-1)  # 生成1:9向量
    length(1:(i-1))  # 输出9

  • all:全与判断,any:全或判断
    x<-1:8
    all(x>5)
    any(x>5)

  • 排除缺失值求均值
    x<-c(20,NA,30,40)
    mean(x)
    mean(x,na.rm=TRUE)

【homework】实现函数f(x):输入为向量x,遍历此向量,如果i, i+1, i+2位置所对应的数的绝对值都小于1,则输出i。写函数实现以上功能, 并调用f(rnorm(1000))

f<-function(x,k=2){
  n<-length(x)  # n是输入向量的长度
  y<-abs(x)  # 取绝对值
  ans<-c()
  for (i in 1:(n-k)){
    if ( all(y[i:(i+k)]<1) ){  # 易错:优先级问题,() > : > +-
      ans=c(ans,i)
    }
  }
  return(ans)
}
set.seed(520)  # 设定随机数种子
f(rnorm(1000))
length(f(rnorm(1000)))/1000  # 计算绝对值小于1的元素占比

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值