本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569

也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/12537014.html


因为本学期选修了几门与统计有关的课,开始学习统计学中普遍使用的R语言。虽然之前学习过Pascal、C、Python等语言,但是初次接触R语言还是感觉跟其他的编程语言有本质的不同。R语言是数学家设计的编程语言,对于一些常见的数学操作和计算要比其他语言简单得多,因此也更适合用在高效的统计分析上。 我在这里了整理了向量、序列、因子、矩阵、数组、列表等R语言常见的操作,希望能对大家有所帮助~如有建议或批评,也欢迎大家到我的个人博客或知乎专栏评论,谢谢大家!


1. [一维]:向量(Vector)

1.1 创建一个向量(R语言中默认创建的是列向量,如需要行向量则需要转置)

max(a,b,c)
matrix()
length()
v <- c(4, 7, 23.5, 76.2) #创建一个向量v并对其赋值
v <- c(4,7,23.5,76.2,80,"rrt") #向量被污染,只要含有字符,则向量中的数字也将被转变成字符:v变为:"4" "7" "23.5" "76.2" "80" "rrt"
u <- c(4,6,NA,2) #NA表示空缺
k <- c(T,F,NA,TRUE) #TRUE、FALSE分别表示逻辑上的真、假
pH <- c(area1=4.5,area2=7,mud=7.3,dam=8.2,middle=6.3)

1.2 向量的基本操作

length(v)       #求向量的长度
mode(v) #求向量的类型(若向量中全是数字,则返回numeric;若含有字母,则返回character;若含有TRUE、FALSE,则变为logical)

1.3 向量的索引(Index)

x <- c(0,-3,4,-1,45,90,-5)
x > 0 #输出:FALSE FALSE TRUE FALSE TRUE TRUE FALSE
x[x>0] #输出:4 45 90
x[x <= -2 | x > 5] #输出:-3 45 90 -5 提示:R语言中|是或(or)的意思
x[x > 40 & x < 100] #输出:45 90
x[c(4,6)] #输出:-1 90 提示:[]中为vector时可以索引多个元素
pH <- c(area1=4.5,area2=7,mud=7.3,dam=8.2,middle=6.3) #此时索引可以用名字来索引内容,如pH['mud]等,类似于python语言中的Dict(字典)

1.4 向量的加减乘除

当两个向量长度一致时,可对应位置直接加或减,如:

v1 <- c(4,6,87)
v2 <- c(34,32.5,12)
v1+v2 #结果:38.0 38.5 99.0

当两个向量长度不一致时(要求一个的长度必须是另一个倍数n),短的向量依次与长向量相加(或减)n次。

v1 <- c(4,6,8,10)
v2 <- c(10,2)
v1+v2 #结果:14 8 18 12

乘除、开方等操作会对向量中的每一个元素进行操作(同时适用于factor,matrix,array等)

v1 <- c(4,6,8,24)
2*v1 #结果:8 12 16 48

v <- c(4,7,23.5,76.2,80)
x <- sqrt(v)
x #结果:2.000000 2.645751 4.847680 8.729261 8.944272

1.5 序列(Sequence)

1.5.1 产生一个序列
  1. 直接用"min:max"产生一个[min, max]的序列,若min>max,则为倒序排列,但要注意括号的使用
  2. 还可以使用seq(from=XX,to=XX,length=XX)或者seq(from=1,to=5,by=1)的形式设置序列个数(长度)或者步长来生成序列。
1:1000                       #1~1000的序列
5:0 #产生5 4 3 2 1 0
10:15-1 #9~14的序列
10:(15-1) #10~14的序列
seq(from=1,to=5,length=2) #1,5
seq(length=10,from=-2,by=1) #-2 -1 0 1 2 3 4 5 6 7
1.5.2 使用rep()重复产生序列
rep(5,10)  #5重复10次:5 5 5 5 5 5 5 5 5
rep(1:3,3) #1 2 3 1 2 3 1 2 3
rep(1:2,each=3) #1:2分别重复3次:1 1 1 2 2 2
1.5.3 产生正态分布、t分布
rnorm(10)               #产生10个标准正态分布序列
rnorm(4,mean=10,sd=3) #产生4个均值为10,标准差为3的正态分布序列
rt(5,df=10) #产生5个自由度df=10的t分布序列</pre>

  

 

从零开始学习R语言(一)——数据结构之“向量”(Vector)的更多相关文章

  1. 从零开始学习R语言(五)——数据结构之“列表(List)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125678 ...

  2. 从零开始学习R语言(四)——数据结构之“数组(Array)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141207 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125677 ...

  3. 从零开始学习R语言(三)——数据结构之“矩阵(Matrix)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60140022 也同步更新于我的个人博客:https://www.nickwu.cn/blog/id=129 3. [二 ...

  4. 从零开始学习R语言(二)——数据结构之“因素(Factor)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60101041 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  5. 从零开始学习R语言(八)——R语言绘图

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...

  6. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  7. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  8. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  9. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

随机推荐

  1. win7/win8下vmware/VirtualBox虚拟网卡显示未识别网络的解决

    http://blog.csdn.net/zengxianying/article/details/44017227

  2. <SCOI2005>互不侵犯の思路

    日常玄学dp #include<cstdio> #include<cstring> #include<iostream> #include<algorithm ...

  3. Leetcode 946. Validate Stack Sequences 验证栈序列

    946. Validate Stack Sequences 题目描述 Given two sequences pushed and popped with distinct values, retur ...

  4. npm(classnames) 更灵活使用类名

    npm install classnames --save import classNames from 'classnames'; const inputCls = classNames({ [st ...

  5. WEB前端工程师简历

    一个热爱前端的工程师 关于我 我的作品 ZENRON 关于我 求职意向 作品集 技术掌握 我的经历 联系我 关于我 英语/CET-4 坐标/苏州 状态/求职 我叫Zenron, 现居住苏州, 是一名前 ...

  6. 递归加法(day1)

    题目:求1+2+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 使用函数指针 1 2 3 4 5 6 7 8 9 10 ...

  7. jquery.qrcode笔记

    由于一个坑爹的项目需要生成二维码扫描,后台由于数据库比较麻烦,就只能前端做了,于是乎找到Js生成qrcode的一个库:https://github.com/jeromeetienne/jquery-q ...

  8. Hadoop2.7搭建

    Hadoop最底部是 Hadoop Distributed File System(HDFS),它存储Hadoop集群中所有存储节点上的文件.HDFS(对于本文)的上一层是MapReduce 引擎,该 ...

  9. 安卓权威编程指南-笔记(第22章 深入学习intent和任务)

    本章,我们会使用隐式intent创建一个替换android默认启动器的应用.名为NerdLauncher. NerdLauncher应用能列出设备上的其他应用,点选任意列表项会启动相应应用. 1. 解 ...

  10. LiteOS内核教程01-IoT-Studio介绍及安装

    1. 物联网一站式开发工具 -- IoT Studio IoT Studio 是支持 LiteOS 嵌入式系统软件开发的工具,提供了代码编辑.编译.烧录 及调试等一站式开发体验,支持 C.C++.汇编 ...