干货分享 | R-数据处理基础篇-一篇概括总结R语言变量储存结构
The following article is from TheWhoOPs Author 申泽西
目录
0.问题导入
1.示例数据及样本程序
2.R语言数据变量存储方式二之矩阵(matrix)
3.R语言数据变量存储方式三之数据框(data.frame)
4.R语言数据变量存储方式四之列表(list)
5.总结
6.致谢
0. 问题导入
当我们学习任何一门新的计算机语言的时候,开篇除了系统与语言环境配置,正式开始入门的就是该语言的变量储存方式与传递方式。但是,这部分真的总是整本书中最单调且朴实无华又有用的部分,而真正能够熟练掌握函数的唯一途径就是在实际过程中多用多练!!为了大家方便,我们将本篇的代码做成了一个R语言脚本,有需要的可以在【TheWhoOPs】公众号后边回复“基础数据处理”获取本篇代码哈~
为了缩短大家这块的学习时间,尽快入门,Jersey 特意将R语言变量储存结构进行了总结,大家看这篇基本可以开始实践啦
1.示例数据及样本程序
1.1 示例数据-R语言变量存储方式一:向量
如下例代码,本篇Jersey首先采用 runif()函数随机生成了一个长度(length)为20且取值范围在-10 ~10之间的随机实数组(runif(20,-10,10)),也引出了R语言第一种变量的储存方式:向量(vector)。
向量属性及对应查询方式:
1. 长度(length):length(变量名),i.e length(df)
2. 数据类型: class(变量名),i.e. class(df),数据类型常用的为numeric (数字), character(字符串)。
3. 判断方式: 判断其是否为向量函数 is.vector(变量名),i.e., is.vector(df)。
head(df)
[1] -8.812040 -4.816596 -9.746894
[4] 5.261308 1.101738 -7.904380
length(df)
[1] 20
class(df)
[1] "numeric"
is.vector(df)
[1] TRUE
1.2 样本程序
本篇入门篇示例函数不再是hello world,而是加油武汉!!
return("Fighting!! WUHAN")
}
R语言中函数的通常储存及调用方法:
2. R语言数据变量存储方式二之矩阵(matrix)
在第二节,我们基于示例数据df对R语言中的变量存储方式二:矩阵(matrix)进行具体介绍
2.1 基于向量的矩阵生成方法1
首先我们可以基于as.matrix()函数将向量型的数据转化为矩阵(matrix),不过如下代码所示,只能转为单列的矩阵。如果需要将其转为5行4列,或是4行5列,我们需要基于2.2 的方法。
mat1
[,1]
[1,] 1.51572303
[2,] -0.45631803
[3,] 0.92141092
[4,] -0.03206002
[5,] -9.00933680
[6,] -5.25229404
[7,] 3.95230102
[8,] 7.94604772
[9,] -8.06965130
[10,] -2.81624416
[11,] -3.64163339
[12,] 9.16364793
[13,] -6.33998803
[14,] -4.56757486
[15,] -2.48729855
[16,] 3.05898896
[17,] 2.51979639
[18,] 4.19247441
[19,] -9.92194021
[20,] 0.69833583
dim(mat1)
dim(mat1)
[1] 20 1
2.2 基于向量的矩阵生成方法2
基于向量的矩阵生成方法2 则是基于matrix函数,以向量为首项输入,行数为参数(nrow)进行生成。但是再生成的过程中有个重要的参数需要注意:byrow = T/Fbyrow这个布尔变量(其实就是是或否)到底是T(是)或F(否)默认状态下为F,则会逐列进行生成矩阵,如mat2_by_row;如果是T,则会逐行生成矩阵
mat2_by_row = matrix(df,nrow = 4,byrow = T)
mat2_by_col
[,1] [,2] [,3] [,4] [,5]
[1,] 1.51572303 -9.009337 -8.069651 -6.339988 2.5197964
[2,] -0.45631803 -5.252294 -2.816244 -4.567575 4.1924744
[3,] 0.92141092 3.952301 -3.641633 -2.487299 -9.9219402
[4,] -0.03206002 7.946048 9.163648 3.058989 0.6983358
mat2_by_row
[,1] [,2] [,3] [,4] [,5]
[1,] 1.515723 -0.456318 0.9214109 -0.03206002 -9.0093368
[2,] -5.252294 3.952301 7.9460477 -8.06965130 -2.8162442
[3,] -3.641633 9.163648 -6.3399880 -4.56757486 -2.4872986
[4,] 3.058989 2.519796 4.1924744 -9.92194021 0.6983358
2.3 类似于面包切片似的矩阵切片
有时候我们只需要矩阵中的一列、连续几列与特定几列,那么我们应该怎么做呢?这时我们就需要像切面包一样,对矩阵进行竖向切片。
提取矩阵中的第1-3列
提取矩阵中的第2和第4列
以上是单纯提取列的提取方法,提取行的方法与其类似,只需要把相应的中括号逗号之后的内容移到逗号前就可以实现。那么新问题又出来了,如何同时提取行与列(图3)?
3. R语言数据变量存储方式三之数据框(data.frame)
3.1 data.frame的生成方式1-由矩阵进行转化
df1
V1 V2 V3 V4 V5
1 1.51572303 -9.009337 -8.069651 -6.339988 2.5197964
2 -0.45631803 -5.252294 -2.816244 -4.567575 4.1924744
3 0.92141092 3.952301 -3.641633 -2.487299 -9.9219402
4 -0.03206002 7.946048 9.163648 3.058989 0.6983358
3.2 data.frame的生成方式2-data.frame函数生成
V2 = 5:8,
V3 = 9:12,
V4 = 13:16,
V5 = 17:20)
df2
V1 V2 V3 V4 V5
1 1 5 9 13 17
2 2 6 10 14 18
3 3 7 11 15 19
4 4 8 12 16 20
3.3 data.frame的切片与增加方式
data.frame 除了可以像矩阵matrix一样方式的切片之外,data.frame还有自己的一套索引方法,即根据列名进行索引。
V1
[1] 1 2 3 4
此外,data.frame 还可以通过“$”符号进行列的增加,注意必须与其他列的长度一样!
df2
V1 V2 V3 V4 V5 V6
1 1 5 9 13 17 21
2 2 6 10 14 18 22
3 3 7 11 15 19 23
4 4 8 12 16 20 24
4. R语言数据变量存储方式四之列表(list)
如果说矩阵(matrix)与数据框(data.frame)可以装字符,数字,数字与字符混装之外,列表(list)较其功能来讲来说就像多来A梦的兜子一样,什么都可以装,什么矩阵啊,数据框啊,函数啊,我们地理中经常用到的Raster 文件啊,都可以装!!而且不光可以装同类的,还可以混装不同类的数据,你就说厉不厉害!!
4.1 往list中装货
list1
[[1]]
function ()
{
return("Fighting!! WUHAN")
}
<bytecode: 0x119344590>
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1.51572303 -9.009337 -8.069651 -6.339988 2.5197964
[2,] -0.45631803 -5.252294 -2.816244 -4.567575 4.1924744
[3,] 0.92141092 3.952301 -3.641633 -2.487299 -9.9219402
[4,] -0.03206002 7.946048 9.163648 3.058989 0.6983358
[[3]]
V1 V2 V3 V4 V5 V6
1 1 5 9 13 17 21
2 2 6 10 14 18 22
3 3 7 11 15 19 23
4 4 8 12 16 20 24
4.2 从list中取货
list中取货需要用双中括号加变量在list中的编号。如:
list1_fun
function(){
return("Fighting!! WUHAN")
}
<bytecode: 0x119344590>
list1_mat = list1[[2]]
list1_mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1.51572303 -9.009337 -8.069651 -6.339988 2.5197964
[2,] -0.45631803 -5.252294 -2.816244 -4.567575 4.1924744
[3,] 0.92141092 3.952301 -3.641633 -2.487299 -9.9219402
[4,] -0.03206002 7.946048 9.163648 3.058989 0.6983358
list1_df = list1[[3]]
list1_df
V1 V2 V3 V4 V5 V6
1 1 5 9 13 17 21
2 2 6 10 14 18 22
3 3 7 11 15 19 23
4 4 8 12 16 20 24
5. 总结
本篇主要解决了以下几个问题:
如何正确创建,保存及链接程序到Rstudio?
如何创建并切片Matrix?
如何创建并切片Data.frame?
如何往List中装货与卸货?
6. 致谢
首先,感谢大家的持续关注,小编会继续努力,持续更新下去的!
大家如果觉得有帮助啊,还麻烦大家关注点赞,也可以扩散到朋友圈,多多引导朋友加入咱们这个简书技术平台, 代码共享推动科研进程, 多谢大家啦~
大家如果在使用本代码的过程有遇到问题的,可以留言评论,也可以私信我哈~~
祝大家身体健康,多多保重!!
扫描二维码
获取Jersey
联系方式
转载自 The WhoOPs
经作者授权转载
文章仅代表作者观点,与本公众号无关,版权归原作者所有
原文标题:R-数据处理基础篇—一篇概括总结R语言变量存储结构
图文排版:焦悦
责任编辑:张英浩
审核:王波涛
终审:顾伟男 田巍 梁龙武
猜你喜欢
1.干货分享 | R-地理数据处理基础-NC格式数据读取,可视化及导出为GeoTiff文件
扫描二维码,关注我们
都是成年人了,要记得告诉地小联你也“在看”哦~👇