15. R语言基础

383 阅读3分钟

1. 工作目录

1.1 切换工作目录

  可以理解为项目路径,这里切成想要的位置.但这是临时的,下次还是默认目录.

setwd('~/workspace/R_basic')
getwd()

  通过全局设置修改工作目录.

image.png

1.2 创建项目

  点击上图的project创建项目.

image.png   可以选择已存在目录或者新建目录,这里选择新建目录. image.png
  之后可以修改项目名以及项目的上一级目录
image.png
  新建项目后,在Linux终端查看,可以看到两个文件.

image.png
  我们运行getwd()会发现自动切换到项目路径.

2. 基础语法

2.1 向量

2.1.1 向量定义

  R定义向量要用c()包围.

var.1 = c(0,1,2,3)
print(var.1)
#如果是连续的整数
temp = 1:10
#如果是有规律的数列
temp = seq(1,10,2) # 1,3,5,7,9
#重复数列
temp = rep(1:3,times=3) # 1 2 3 1 2 3 1 2 3
temp = rep(1:3,each=2) # 1 1 2 2 3 3

2.1.2 向量取名

var.2 = ('a','b','c','d')
names(var.1)#返回var.1的向量名
names(var.1) = var.2#给var.1取名

2.1.3 向量取值

  使用中括号,请注意,R索引从1开始.

var.1[2]

  也可以一次性取多个值.向量的下标要么是数字,要么是向量.

var.1[c(3, 1)]
#当然也可以按名称取值,比如看下面
var.1[c('a','d')]
#同样可以按逻辑取值
var.1[var.1 < 2]
var.1[var.1 == 2]
#这段代码实际等于
var.1[c(T,T,F,F)]

image.png

2.1.4 向量运算

(1) 以向量为单位的运算直接+-x/,这个太基础了看这个吧Click.

var.1 + 3
# 3 4 5 6

(2) 用函数计算

mean(var.1+3)#4.5
#也可以用循环
sum = 0
for(i in var.1){
  sum = sum + i
}
print(sum/length(var.1))

  最后我想声明一点,R语言的原子数据类型是向量,即使我们写a=3,但实际代码是a=c(3).
  以及,与数组不同,向量可以随时添加数据.

score = c(11,1,32)
names(score) = c('aa','bb','cc')
score
#aa bb cc 
#11  1 32 
score[4] = 1111
score
#  aa   bb   cc      
#  11    1   32 1111 

2.2 表格

  似乎官方名叫数据框.

2.2.1 表格创建

  调用read函数读取文件

read.table('dog_info.tsv')
read.table(file='dog_score.tsv',row.name=1,head=T)
#表示row在一定列
#head=T表示存在列名.
#当表格左上角不存在字时,就会自动识别行名和列名

image.png
  这是用代码读取,还一个方式是用图形化界面.

image.png

image.png

  当然还可以代码创建

data.frame(S1 = c(1,2,3), S2 = c(4,5,6))#第一列,第二列
#   S1 S2
# 1  1  4
# 2  2  5
# 3  3  6
data.frame(row.names = c(1,999,3), S2 = c(4,5,6))#行名,第一列
#    S2
# 1    4
# 999  5
# 3    6

2.2.2 表格信息

  获取行名、列名

 rownames(dog_info)
 colnames(dog_info)
# "age"  "info"

  取值的三种方式.

  • 按位置取值
#获取第三行的全部信息
dog_info[3,]
#获取第三行某列信息
dog_info[3,1]
#也可以按数组取值
dog_info[c(1,3),c(1)]
  • 按名称取值
dog_info['xiaoli','info']
  • 按逻辑取值   将年龄<6的狗狗取出.
# 将表中某列的数据取出
dog_info$age
#  [1] 6 5 4 5 6 3
dog_info[dog_info$age < 6,]

2.3 矩阵

  我们可以用代码将数据框转为矩阵,但注意的是如果数据框内的数据类型不完全相同,会被全部判为字符串类型.

dog_score = as.matrix(dog_score)
# res:
         yuwen shuxue wuli
maomao      88     55   44
xiaoli      77     77   99
aiqi        66     88   77
huihui      55     55   99
luma        44     99   88
tiantian    99     11   22

2.3.1 矩阵运算

  • 逐个元素
      矩阵也有类似基本运算.
as.matrix(dog_score) + 3
  • 按行/列
rowSums(dog_score)
#maomao   xiaoli     aiqi   huihui     luma tiantian 
#   187      253      231      209      231      132 
colSums(dog_score)
  • 计算相关系数
cor(dog_scores)
# 任意两列间计算相关系数

2.4 函数

  主要介绍一些函数.

2.4.1 round

  四舍五入.

x = 1.33333
round(x,digit=2)# 1.33

2.4.2 ceiling

  向上取整.

ceiling(x)# 2