R语言入门_r语言y<-x[c(2,4)]-程序员宅基地

技术标签: R  R语言  大数据  

目录

一、标量

检验数据类型

强制类型转换

二、向量

1.生成有规律的向量

 2.使用seq(from,to,by)生成向量

 3.rep(x,...) 生成满足条件的重复向量

 4.逻辑向量的生成

三、矩阵 

矩阵的拉直 

 四、数组

 五、数据框

 六、因子

 七、列表


一、标量

在R语言中赋值采用<-或者=

a<-4 数值类型标量
b<-"hello"

字符串类型标量

c<-"t" 字符类型标量
f<-TRUE 布尔类型标量

检验数据类型

is.numeric(a) 判断a是不是数值型对象
is.character(a) 判断a是不是字符型对象

强制类型转换

s<-as.character(a) 将a转换成字符串类型赋值给s,a本身的类型不变
a<-as.character(a) 将a转换成字符串类型赋值给a,a本身类型变成字符型变量

二、向量

向量使用<-c来赋值,其中,向量的每一个元素的分隔符为“,”

num<-c(9,2,-3,5,6,7,8,9) 数值型向量
ord<-c("a","wdw","23") 字符型向量
logv1<-c(T,T,T,TF,F,F) 逻辑型向量
logv2<-c(True,TRUE,FALSE) 逻辑型向量

1.生成有规律的向量

直接使用a:b的形式,生成从a到b的数列,如果a>b就逐项+1,否则逐项-1

从我们下面的代码中可以看出我们冒号的优先级比×和-高

 2.使用seq(from,to,by)生成向量

第一个参数为起始值,第二个参数为终止值,第三个数为步长

当然我们也可以直接设置整个向量的长度来生成我们的向量 

 3.rep(x,...) 生成满足条件的重复向量

rep(1,times=10)
x <- c(1,2,3,4)
rep(x,times=3)
rep(x,length.out=10)
rep(x,each=2)
rep(x,times=c(1,2,2,3))
rep("abc",5)
y <- c("a","b","c")
rep(y,2)
rep(y,length.out=10)
rep(y,times=c(1,2,3))

 4.逻辑向量的生成

z <- c(8,3,5,7,6,2,8,9)
n <- z > 5
#判断z中的全部元素是不是都大于5
all(z>5)
#判断z中是否有元素大于5
any(z>5)
#从下面的结果中我们可以看出,我们的R语言的数组下表是从1开始的
z[2]
z[1:4]
z[c(2,5,7)]
#-3表示不取第三个元素
z[-3]
#第二个元素和第四个元素不取
z[c(-2,-4)] 
#和上一个代码效果相同,都是第二个元素和第四个元素不取
z[-c(2,4)]

三、矩阵 

①矩阵是二维数组

②矩阵中的元素必须是相同类型的

③生成矩阵需要由函数matrix()实现

mymatrix <- matrix(vector,nrow = number_of_rows,
                                ncol = number_of_columns,
                                byrow = logical_value,

                                dimnames = list(char_vector_rownames, char_vector_colnames))

从下面的运行结果中,我们会发现我们的R语言中的矩阵是默认按照列的形式摆放的。

A <- matrix(1:20,nrow=5) 

 

 当然我们的矩阵也可以试用贴下面的方法生成

values <- c(1,2,3,4)
#创建行索引向量
rnames <- c("r1","r2")
#创建列索引向量
cnames <- c("c1","c2")
#指定我们的矩阵,分别将我们的数值,行数传入,
#byrow默认为FALSE,意思是按照列进行摆放
#如果为TRUE则为按照行进行摆放
#dimnames可以指定我们列和行的名字
C <- matrix(values,nrow=2,byrow=T,
            dimnames=list(rnames,cnames))
C

 

#如果我们将byrow的参数调整为F就会变成如下的形式
D <- matrix(values,nrow=2,byrow=F,
            dimnames=list(rnames,cnames))
D

 第一行代码为找到第一行第二列的数据

第二行代码为找到第一行的全部数据

第三行代码为找到第二列的数据

C[1,2]
C[1,] 
C[,2] 

#查找我们A中第二行,第二列和第四列的焦点所对应的值
A[2,c(2,4)] 
#查找我们A中第一行和第三行与第三列和第四列的焦点所对应的值
A[c(1,3),c(3,4)]
#查看A的维数
dim(A) 
#查看A的行数
nrow(A)
#查看A的列数
ncol(A) 
#查看C矩阵的索引,先返回行索引,再返回列索引
dimnames(C)
#查看A矩阵的索引,先返回行索引,再返回列索引 
dimnames(A)
#设置A的行列索引
dimnames(A) <- list(c("one","two","three","four","five"),
                    c("I","II","III","IV"))
dimnames(A)
A

 

矩阵的拉直 

#将我们的c强制类型转换为向量,然后赋值给我们的horz,也就是将我们的矩阵拉直
#从下面的运行结果中可以看出,我们拉直的方式是按列拉直
horz <- as.vector(C)
horz
C

 

#生成E矩阵,行数为2
E <- matrix(c("a","b","c","d","e","f","g","h"),nrow=2)
E
#生成G矩阵,列数为2
G <- matrix(c("i","j","k","l","m","n","o","p"),nrow=2)
G
#竖着拼接
rbind(E,G) 
#横着拼接
cbind(E,G) 
#生成H矩阵
H <- matrix(1:6,nrow=2)
H
#生成J矩阵
J <- matrix(5:8,ncol=2)
J
#这里我们可以发现,如果我们的列数不同的话,我们是不可以竖着拼接的
rbind(H,J)
#这里我们的行数相同,所以可以横着拼接
cbind(H,J)
#
cbind(E,H)

 

 

 四、数组

①数组与矩阵相似,但是维度必须大于2

②数组中的元素必须是相同类型

③选取数组中匀速的方式与矩阵相同

④数组可以通过函数array创建

一般形式

myarray <- array(vector, dimensions, dimnames)

dim1 <- c("A1","A2")
dim2 <- c("B1","B2","B3")
dim3 <- c("C1","C2","C3","C4")
dim1
dim2
dim3

#将我们从1-24的数据分成两行三列的四个矩阵,其索引分别为dim1,dim2,dim3
exarray <- array(1:24, c(2,3,4),
                 dimnames=list(dim1,dim2,dim3))
exarray
#这里我们取出的是第三个矩阵中的第一行第二列的数据
exarray[1,2,3]

 五、数据框

数据框是由不同类型的数据列组成的类矩阵,可以理解为是一个松散的数据集

创建指令mydata<-data.frame(col1,col2,col3,……)

ID <- c(1,2,3,4)
age <- c(25,34,28,52)
status <- c("Poor","Improved","Excellent","Poor")
diabetes <- c("Type1","Type2","Type1","Type1")
patientdata <- data.frame(ID,age,diabetes,status)
patientdata

 

 

#提取出我们patientdata中的第一列和第二列
patientdata[1:2]
#当然我们也可以指定查找的索引名为具体的对象
patientdata[c("diabetes","status")]
#直接获得patientdata中的age列的元素
patientdata$age
#修改某一列的数据
patientdata$age[2] <- 33
patientdata$diabetes[3] <- "Type2"

现在我们的数据表就被修改成了如下的样子 

 

 六、因子

因子:分类变量和有序变量在R中称为因子

分类变量:也称名义变量,变量的值没有大小关系,没有序列关系,就如同上面表格中病例的一型和二型一样

有序变量:变量的值存在一定的顺序关系,但没有数量关系,就如同上面代码中status中的评价等地(poor,Improved,excellent)

函数:factor(),以一个整数向量的形式存储类别值,整数的取值范围为[1,k],k为水平值的个数。

#diabetes在这里存储的是我们病例的类型,默认是没有顺序的
diabetes <- factor(diabetes)
#status在这里存储的是治疗的效果,并且是有顺序的,但是默认的排序是按照字符的顺序来排序的
status <- factor(status, ordered=T) 
status
#我们的函数的level的排序也可以由我们自行指定
status <- factor(status, ordered=T,
                 levels=c("Poor","Improved","Excellent"))
diabetes
status

 

 七、列表

列表可以看做一些对象(R中的任何数据结构)的有序集合

创建一个列表

mylist <- list(object1, object2,......) 

创建一个列表,并且给列表中的每个对象命名
mylist <- list(name1=object1, name2=object2,......)

g <- "my list"
h <- c(25,26,18,39)
j <- matrix(1:10,nrow=5)
k <- c("one", "two", "three")
mylist <- list(title=g, ages=h, j, k)
mylist

获取列表中的第二个元素 

mylist[[2]]

 

#在下面的代码中,我们创建了一个列表
#其中第一个元素为ID
#第二个元素为名字
#第三个元素为一个矩阵,并且这个矩阵为两行两三,并且传入的数据是按照行排,不是先按列来
#并且指定我们的维数的索引的列表名字分别为学期名和学科的名字
stu <- list(ID="12345678",name="Ün",
            grade=matrix(c(99,96,88,92,93,87),nrow=2,byrow=T,
                         dimnames=list(c("第一学期","第二学期"),
                                       c("数学分析","高等代数","概率论"))))
stu

​​​​​​​

#查看列表中的ID元素
stu$ID
#查看列表中的名字元素
stu$name
#查看我们列表中的第二个元素,这里列表的下标是从1开始的,不是从0开始的,也就是我们的名字
stu[[2]]
#查看我们的成绩元素
stu$grade
#同上
stu[[3]]
#查看我们的成绩元素中的第二行第三列的元素
stu[[3]][2,3]
#查看成绩元素中的第一行第一列的数据
stu$grade[1,1]
#将我们的名字元素更换为李四
stu$name <- "李四"
#将成绩元素的第一行第二列的位置的数据改成78
stu$grade[1,2] <- 78
stu

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_62684026/article/details/125523689

智能推荐

C++基础入门(超详细)_c++入门-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏121次。c++_c++入门

jstl标签<c:url>查询分页时拼接参数的用法_jstl 标签输出内容拼接-程序员宅基地

文章浏览阅读1.5k次。先上代码:${ pageContext.request.contextPath }号码段管理 号码段管理 号码段管理 区域号

浅解比SQL更好用的SPL(二)-程序员宅基地

文章浏览阅读118次。从 SQL 到SPL基本查询语法迁移之多表操作上一篇我们针对单表的情形了解了如何把数据计算从 SQL 查询迁移到集算器,或者更准确地说,迁移到集算器所使用的SPL集算语言。这个迁移过程,既有相同的概念,也有不同的思路。接下来,我们一起针对多表的情况看一下集算器和SPL语言是如何发挥更大的..._sql常用比if更好用

国科大高级人工智能10-强化学习(多臂赌博机、贝尔曼)_国科大 强化学习-程序员宅基地

文章浏览阅读1.5k次。文章目录多臂赌博机Multi-armed bandit(无状态)马尔科夫决策过程MDP(markov decision process1.动态规划蒙特卡罗方法——不知道环境完整模型情况下2.1 on-policy蒙特卡罗2.2 off-policy蒙特卡罗时序差分方法强化学习:Reinforcement learning目标:学习从环境状态到行为的映射,智能体选择能够获得环境最大奖赏的行为..._国科大 强化学习

如何用 Visual studio 2003/2005 调试 ASP 应用程序、Javascript 代码(转)_visual studio 2003 asp 远程调试-程序员宅基地

文章浏览阅读1k次。如何用 Visual studio 2003/2005 调试 ASP 应用程序、Javascript 代码 在vs2005中调试ASP网站的错误信息:无法提供此类型的页。说明: 由于已明确禁止所请求的页类型,无法对该类型的页提供服务。扩展名“.asp”可能不正确。 请检查以下的 URL 并确保其拼写正确。 怎么解决这个问题呢?请看下文。 ASP.NET 已经很_visual studio 2003 asp 远程调试

MMO即时战斗:地图角色同步管理和防作弊实现_mmo城镇同步-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏29次。一、前言 无论是端游、页游、手游如果是采用了MMO即时战斗游戏模式,基本都会遇到同屏多角色实时移动、释放技能、战斗等场景,于是自然也需要实现如何管理同屏内各种角色的信息同步:例如角色的位置、以及角色身上的装备、时装、buffer等状态的实时切换。同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的,解决同步问题的最简单的方法就是把每个玩家的_mmo城镇同步

随便推点

vulfocus——maccms远程命令执行(CVE-2017-17733)_vulfocus/dedecms-cve-2017-17731-程序员宅基地

文章浏览阅读1.2k次。Maccms 8.x版本中存在安全漏洞。远程攻击者可借助index.php?m=vod-search请求中的‘wd’参数利用该漏洞执行命令。2.借助index.php?m=vod-search请求中的‘wd’参数利用该漏洞执行命令。利用浏览器浏览器发送POST数据包或直接使用Python编写的脚本进行发送POST数据包。3.进行攻击,该payload是直接生成一个c.php一句话木马文件,连接密码为c。Maccms是一套跨平台的基于PHP和MySQL快速建站系统。_vulfocus/dedecms-cve-2017-17731

c++面向对象课程笔记_包含警戒存在于-程序员宅基地

文章浏览阅读86次。计算机软件专业面向对象oop课程笔记_包含警戒存在于

oracle行锁 select for update_oracle select 加锁检测 update-程序员宅基地

文章浏览阅读845次。oracle行锁 select for update_oracle select 加锁检测 update

【异常】解决@Autowired注入依赖失败的问题,required a bean of type that could not be found. Autowired(required=true)_@autowired(required = true)-程序员宅基地

文章浏览阅读817次。结合报错信息及代码,报错处的代码为ActiveIncrUserTimer使用了注解@Autowired进行依赖注入,但是没有找到可以被用来注入的实例。即Spring Boot获取ActiveIncrUserService 的实例失败。原来是我不小心把这个代码ActiveIncrUserServiceImp给误删了。_@autowired(required = true)

优化USB UVC ISO传输速度_全志uvc提升iso传输速度-程序员宅基地

文章浏览阅读2k次。USB3.0单路uvc iso传输速率只有92MB/s, 1080p yuv 23.4fps,我们需要提高UVC传输速率(YUV帧率)_全志uvc提升iso传输速度

告别2014,转战2015-程序员宅基地

文章浏览阅读59次。-----------------------------------------------------------------------------------------欲穷千里目,更上一层楼。 2014年曾是一个开始,在此期间,无限的恐惧与励志。此部落格也在这一年的一月份开通,这里也是一个互联网世界。 记录2014流水:1月-4月,日子如压缩般被度过,Web方面完..._proxmox solidworks cad