学习小组Day5笔记-意尔

1.向量

向量.png

1.1向量赋值

> x <-c(1,2,3,4,5) #num[1:5] 1 2 3 4 5
> x #此时直接输入x,print(x)的省略
[1] 1 2 3 4 5 #直接显示向量

> y <-c("one","two","three") #chr[1:3]"one" "two" "three";注意一定要加引号。
> y
[1]"one" "two" "three"
> z <-c(TRUE,T,F) #logi[1:3] TRUE TRUE FALSE;不能大小写混写
> z
[1] TRUE TURE FALSE

> c(1:100) #构建等差数列
> seq (from=1,to=100) #从1到100的序列
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
 [17]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
 [33]  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
 [49]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64
 [65]  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80
 [81]  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100

> seq (from=1,to=100,by=2) #从1到100相差2的等差序列
> seq(1,100,2) #seq(from,to,by)为有规律数列
 [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43
[23] 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87
[45] 89 91 93 95 97 99

> x <- seq(1,10,0.5) #1-10之间相差为0.5的等差序列
> x
 [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0
[14]  7.5  8.0  8.5  9.0  9.5 10.0

> seq (from=1,to=100,length.out=10) #输出从1到100的10个值,须为等差序列
[1]   1  12  23  34  45  56  67  78  89 100

> rep(1:3,times=2) #将123重复2次
[1] 1 2 3 1 2 3

> rep (2,5) #将2重复5次
[1] 2 2 2 2 2

> rep (x,5)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 #x在上面被赋值为1 2 3 4 5

> rep (x,each=5) #每个元素重复5次
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5

> rep(x,c(2,4,6,1,3)) #x第一个数重复2次,第二个数重复4次……
 [1] 1 1 2 2 2 2 3 3 3 3 3 3 4 5 5 5

> a <-c(1,2,"one") #输入不同类型的向量
[1] "1" "2" "one" #所有向量都变成了字符串

> mode(a) #查看a的向量类型
[1] "numeric"

> x <- c(1,2,3,4,5)
> y <- c(6,7,8,9,10)
> x*2+y
[1]  8 11 14 17 20

> x[x>3] #列出x中大于3的元素
[1] 4 5

1.2向量索引

1.2.1正(负)整数索引

> x=c(1:100) #int[1:100]
[1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
[17]  17  18  20  21  22  23  24  25  26  27  28  29  30  31  32  33
[33]  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49
[49]  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65
[65]  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81
[81]  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97
[97]  98  99 100
> length(x) #统计x有多少个元素
[1] 100
> x[1] #x中第一个数
[1] 1
> x[0]
integer(0) #提示整数0,搜索不出x中的数字
> x[-19] #输出除了第19个以外的剩余元素
[1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
[17]  17  18  20  21  22  23  24  25  26  27  28  29  30  31  32  33
[33]  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49
[49]  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65
[65]  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81
[81]  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97
[97]  98  99 100
> x[2:4] #输出第2-4位元素
[1] 2 3 4
> x[c(4:18)] #输出x中第4到第18个元素
[1]  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
> x[c(2,4,6,8)] #输出x第2,第4,第6,第8个元素
[1] 2 4 6 8
> x[-(2:4)] #输出除了第2-4以外的剩余元素
 [1]   1   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
[17]  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35
[33]  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51
[49]  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67
[65]  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83
[81]  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99
[97] 100
> x[c(-2,3,4)] #逻辑矛盾,报错
Error in x[c(-2, 3, 4)] : only 0's may be mixed with negative subscripts
> x[x==10] #输出等于10的元素
[1] 10
> x[x<0] #输出小于0的元素
integer(0) #提示没有改元素
> x[x %in% c(1,2,5)] #输出x在向量c(1,2,5)中的元素
[1] 1 2 5

1.2.2逻辑向量索引

> y <- c(1:10)
> y[c(T,F,T,T,F,F,T,T,T,F)]
[1] 1 3 4 7 8 9 #只输出逻辑值为TRUE的元素
> y <- c(1:10)
> y[c(T)] #只有一个逻辑值时,将所有元素一起判断
[1]   1   2   3   4   5   6   7   8   9  10
> y[c(F)]
integer(0) #全部为假,全不输出
> y[c(T,F)] #循环判断,T F T F T F T F T F 
[1] 1 3 5 7 9
> y[c(T,F,F)] #循环判断,T F F T F F T F F T
[1]  1  4  7 10
> y[c(T,F,T,T,F,F,T,T,T,F,T)] #逻辑值比数值多了一位
[1]  1  3  4  7  8  9 NA #NA缺失值
> y[y>5 & y<9]
[1] 6 7 8
> z <- c("one","two","three","four","five")
> "one" %in% z #"one"是否在z中
#%in%相当于math()函数的一个缩写。用来判断一个数组或者矩阵是否包含另一个数组或矩阵
[1] TRUE
> z["one" %in% z] #“one” %in% z 是判断字符串是否是z的元素,返回逻辑值;相当于z[T]
> z[z %in% c("one","two")]  #相当于z[T,T,F,F,F]
[1] "one" "two"
> z %in% c("one","two") 
[1]  TRUE  TRUE FALSE FALSE FALSE #最终逻辑
> k <- z %in% c("one","two")
> z[k] 
[1] "one" "two" #在索引中只输出TRUE的元素(前两个)

1.2.3名称索引

> names(y) <- c("one","two","three","four","five","six","seven","eight","nine","ten") #添加名称
> y
  one   two three  four  five   six seven eight  nine   ten  #元素名称,name的属性。类似perl中的哈希结构
    1     2     3     4     5     6     7     8     9    10 #元素值,name的value 。可通过元素的name访问元素值
> names(y)
 [1] "one"   "two"   "three" "four"  "five"  "six"   "seven" "eight"
 [9] "nine"  "ten"  

1.2.4修改向量

添加元素:

> x
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
 [17]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
 [33]  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
 [49]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64
 [65]  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80
 [81]  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100
> x[101] <- 101 #添加单个元素
> x
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
 [17]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
 [33]  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
 [49]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64
 [65]  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80
 [81]  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100 101

> v <- 1:3
> v
[1] 1 2 3
> v[c(4,5,6)] <- c(4,5,6) #批量赋值,添加多个元素
> v
[1] 1 2 3 4 5 6

> v[20] <- 4
> v
 [1]  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4 #向量被扩展成20个元素,没有被赋值的元素为NA

> append(x=v,values=99,after=5) #在第5个元素后插入数值99
 [1]  1  2  3  4  5 99  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4

> append(x=v,values=99,after=0) #在向量的头部插入数据99
 [1] 99  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4

删除向量

> rm(v) #删除向量v
> v
Error: object 'v' not found

> y[-c(1:3)] #索引y函数中1-3以外的值
 four  five   six seven eight  nine   ten 
    4     5     6     7     8     9    10 
> y <- y[-c(1:3)] #将索引结果赋值y
> y
 four  five   six seven eight  nine   ten 
    4     5     6     7     8     9    10

改变向量中某个元素的值

> y["four"] <- 100 #直接将值赋值到索引
> y
 four  five   six seven eight  nine   ten 
  100     5     6     7     8     9    10 

> v[2]
[1] 2
> v[2] <- 15 #将15赋值到v索引到的第二个数
> v[2]
[1] 15
> v[2] <- "one" #如果在num的向量里赋值了chr
> v
[1] "1"   "one" "3"   "4"   "5"   "6"  #所有的num都变成了chr

2.数据框

2.1概念

  • 实质上是一个列表
  • 列表中的元素是向量
  • 向量构成数据框的列
  • 每一列必须具有相同长度
  • 数据框是矩形结构
  • 数据框的列必须命名

数据框与数据集对比

区别 本质 功能 不同领域概念是否一致
数据框 是一种表格式的数据结构 旨在模拟数据集 与其他统计软件的数据集概念一致
数据集 通常由数据构成的矩形数组 统计学家:行表示观测,列表示变量 不同行业数据集的行和列叫法不同
数据分析师:记录,字段
数据挖掘、机器学习:事例,属性

数据框与矩阵

  • 数据框形状上很像矩阵
  • 数据框是比较规则的列表
  • 矩阵必须为同一数据类型
  • 数据框每一列必须为同一类型,每一行则不必

2.2数据框

提取元素

> state <- data.frame(state.name,state.abb,state.region,state.x77) #将state.name,state.abb,state.region,state.x77这四个数据框合并成一个名为“state”的数据框
> state[1] #输出数据框的第1列
> state[c(2,4)] #输出第2和第4列
> state[-c(2,4)] #输出除第2和第4列以外,剩下的数据
> state[,"state.abb"] #输出state.abb列
> state["Alabama",] #输出Albama行
> state$Murder #输出Murder列
> state$state.name #输出state.name列

做图

> women #输出15名女性的身高体重
   height weight
1      58    115
2      59    117
3      60    120
4      61    123
5      62    126
6      63    129
7      64    132
8      65    135
9      66    139
10     67    142
11     68    146
12     69    150
13     70    154
14     71    159
15     72    164
> plot(women$height,women$weight) #绘制身高和体重的散点图

> lm (weight ~height,data = women) #lm线性回归的时候给出列名即可

Call:
lm(formula = weight ~ height, data = women)

Coefficients:
(Intercept)       height  
     -87.52         3.45

> attach(mtcars) #加载名为mtcars的数据框到R搜索目录中,之后直接敲击列名即可使用数据
> detach(mtcars) #取消加载
> with(mtcars,{hp}) #输出名为mtcars的数据框中,列名为hp的数据

TIPS:

  • 在Console中输入命令
  • 表格在R语言中改名叫数据框
  • 要理解代码的含义
    -单双中括号的区别


    单双中括号的经典解释

今天观看的视频编号为
P16 P17 P18 P22

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

推荐阅读更多精彩内容

  • 今天主要学习两个数据类型:向量和数据框。下面也只是展现了最基础的操作,以后将在学习的过程中慢慢补充。 向量 向量的...
    soda0301阅读 200评论 0 0
  • R语言的简单使用 数据类型:向量,矩阵,数组,数据框,列表 向量1.1.向量的赋值;向量的四种赋值1.2. 从向量...
    FSAE阅读 200评论 0 0
  • 数据结构 昨天安装R提及到了数据的类型https://www.jianshu.com/p/c16e9351f083...
    TeeM0猫爪草阅读 287评论 0 0
  • 今天学习R 数据类型 向量 向量: vector, 是 R 中最重要的一个概念,它是构成其他数据结构的基础。向量其...
    小小张_阅读 111评论 0 0
  • 很抱歉今天的作业交的很晚,昨天的学习真的是搞得我头大,总是各种出错,找不出原因,最后很晚了才刚刚把内容练习了一遍,...
    胡莹crystal阅读 411评论 1 0