R语言 学习笔记(一)

写在前面:写的比较简单,把基本知识点捋了一遍,主要是用来给自己理清思路和复习用的,适合有一定编程基础的初学者来看。


R语言 基本语法

1. “Hello World!”

myString <- "Hello, World!"
print ( myString)

2. 怎么打注释?

# This is how to quote.

R语言 数据类型

数据类型 元素 维度
向量 Vector 同类型元素 一维
列表 List 不同类型元素 一维
矩阵 Matrix 同类型元素 二维
数组 Array 同类型元素 多维
因子 Factor 向量和向量不同值的标签 一维
数据帧 Data Frame 不同类型相同长度的向量 二维

1. 都有什么常用的数据类型?
逻辑型: TRUE, FALSE
数字:22.5, 5
整型:25L, 0L
复合型: 3+2i
字符型:'a', "Hello", '25.4'
原型:举个例子

v<-charToRaw("Hello!")
print(v)

输出结果:

[1] 48 65 6c 6c 6f 21

2. 向量Vector怎么用?

Vector由多个同类型的元素组成。

animal <- c('cat', 'dog', 'rabbit')

3. 列表List怎么用?
List可以由多个不同类型的元素组成。

list_ <- list(c(2,3,4),22,sin)

4. 矩阵Matrix怎么用?
Matrix是一个二位数据集。nrow代表行(横着有几行),ncol代表列(每行有几个)。
byrow true的时候按行填充(如下),否则按列填充。

M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)

输出结果:

     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "c"  "b"  "a" 

5. 数组Array怎么用?
Array是可以有多个维度的矩阵。Matrix可以视为一个二维的Array。
创建Array的方式:

a <- array(c('green','yellow'),dim = c(2,2,2))
a<-c('green', 'yellow', 'green', 'yellow', 'green', 'yellow', 'green', 'yellow')
dim(a)<-c(2,2,2)
#或者a<-array(a, dim=c(2,2,2))

输出结果:

, , 1
     [,1]     [,2]    
[1,] "green"  "green" 
[2,] "yellow" "yellow"
, , 2
     [,1]     [,2]    
[1,] "green"  "green" 
[2,] "yellow" "yellow"

6. 因子Factor怎么用?
Factor表示了一个向量和向量中不同值的标签。

v <- c(1,1,1,1,2,2,4,3,3,3)
factor_v <- factor(v)
print(factor_v)
print(nlevels(factor_v))

输出结果:

 [1] 1 1 1 1 2 2 4 3 3 3
Levels: 1 2 3 4
[1] 4

7. 数据帧Data Frame怎么用?
Data Frame可以由不同类型、相同长度的向量组成。

BMI <- data.frame(
  gender = c("Male", "Male","Female"),
  height = c(152, 171.5, 165),
  weight = c(81,93, 78),
  age = c(42,38,26)
)

输出结果:

  gender height weight age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26

R语言 变量

1. 怎么赋值?
用"=" "<-" "->"赋值
2. 一些常用的函数
print():打印 print(var)
cat():打印多个 cat("var is ", var)
ls():查找变量,匹配变量名
rm():删除变量
class():输出变量类型
is():判断类型


R语言 运算符

1. 算术运算符
+、-、*、/、%%(求余)、%/%(相除求商)、^(指数)
2. 关系运算符
>、<、=、<=、>=、!=
3. 逻辑运算符
判断两个向量的所有元素:&、|、!、
判断两个向量的第一个元素:&&、||
4. 赋值运算符
<-、=、<<-、->、->>
5. 其他运算符
:(为向量顺序创建一系列数字)、%in%(某元素是否属于某向量)、%*%(矩阵与其转置矩阵相乘)


R语言 决策

1. if

if(boolean_expression) { }

2. if...else

if(boolean_expression 1) { } 
else if( boolean_expression 2) { }
else { }

3. switch

switch(expression, case1, case2, case3....)

R语言 数据重塑

1. 如何将多个向量合并成一个数据帧?

fruit <- c("Apple", "Orange")
num <- c(1,2)
list1 <- cbind(fruit, num)

2. 如何将两个数据帧合并在一起?

  1. all.data <- rbind(data1, data2):纵向合并(表里面添加新行)
  2. merge():
    使用的数据如下:
ID1 <- c(1,2,3,4)
ID2 <- c(1,2,7,8)
name1 <-c("Peter","Tony","Steve","Tom")
name2 <- c("Peter","Tony","Natasha","Bruce")
student1 <- data.frame(ID1,name1)
student2 <- data.frame(ID2,name2)

①通过ID1、ID2把两个数据帧连接起来,取ID的交集
输出结果:

total_student<-merge(x = student1, y = student2, by.x="ID1", by.y = "ID2")
  ID1 name1 name2
1   1 Peter Peter
2   2  Tony  Tony

②通过ID1、ID2把两个数据帧连接起来,取ID的并集,空缺位置填充为NA

total_student<-merge(x = student1, y = student2, by="ID1", by.y = "ID2", all = T)

all = F时是交集;all.x = T时左连接(只有1、2、3、4);all.y = T时右连接(只有1、2、7、8)
输出结果:

  ID1 name1   name2
1   1 Peter   Peter
2   2  Tony    Tony
3   3 Steve    <NA>
4   4   Tom    <NA>
5   7  <NA> Natasha
6   8  <NA>   Bruce

3. 如何拆分数据
使用melt():
注意需要安装reshape这个包。
(使用的数据代表学生期中期末考的成绩。)

install.packages("reshape")
library(reshape)
Name <- c("Tony", "Tony", "Tony", "Steve", "Steve")
Test <- c("Mid","Final","Final","Final", "Final")
Score <- c(100, 100, 60, 80, 95)
Transcript <- data.frame(Name, Test, Score)
molten_Transcript <- melt(Transcript, id = c("Name", "Test"))
print(molten_Transcript)

除Name、Test以外的列被转换为了多行展示:

   Name  Test variable value
1  Tony   Mid    Score   100
2  Tony Final    Score   100
3  Tony Final    Score    60
4 Steve Final    Score    80
5 Steve Final    Score    95

4. 如何重构数据
使用cast():
cast()中公式左边的变量会作为输出的每一列,右边的变量是因子,每个Level都会在输出中作为一列。
(把期中期末的成绩加和)

recasted_Transcript <- cast(molten_Transcript, Name+Test~variable,sum)
print(recasted_Transcript)

输出结果:

   Name  Test Score
1 Steve Final   175
2  Tony Final   160
3  Tony   Mid   100
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,808评论 6 13
  • 5.1 加载数据 加载名为sample.csv的数据并以dat为名称保存,其命令如下。 >dat<-read.cs...
    松爱家的小秦阅读 642评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,094评论 0 13
  • 中午12.00,我进入“洋味”的麦当劳,把所有的套餐浏览一遍,最后决定点了一个“开心乐园”餐。之所以选它,是因为它...
    回归本心阅读 237评论 0 0
  • 此时儿子去楼下与他的小伙伴疯跑玩耍呢!王先生在洗澡,我闲着没事就决定完成今天的写字作业! 儿子的欢笑声从窗外传来,...
    知子花开阅读 228评论 0 2