R 基础知识:数据结构(list & factor)

R语言中基本的数据单位是向量(vector),通过对于向量的堆叠我们能组合出更进阶的数据结构。这些数据结构包括弹性容器:list;有阶阶层的向量:factor;数据框:data.frame;二维的向量:matrix;阵列:array。

1. list

若我们用向量c()存储数据,因为其中有文字向量,所以在所有数据都会变成文字向量。

# 以朱元璋为例
name = "zhuyuanzhang"
nickname = c("zhuchongba","zhuguorui","zhubaba")
gender = "man"
profession = "emperor"
birthAndDead = "1328-1398"
age = 70
zyz = c(name,nickname,gender,profession,birthAndDead,age)
zyz

# [1] "zhuyuanzhang" "zhuchongba"   "zhuguorui"   
# [4] "zhubaba"      "man"          "emperor"     
# [7] "1328-1398"    "70"          

若我们用list来储存,将宣告好的不同数据存储进去。我们可以看到list的强大收纳能力,他用数个[[索引值]]将各个向量依序放入其中。在list中各个向量依然保有自己的类型。

zyzList = list(name,nickname,gender,profession,birthAndDead,age)
zyzList
# [[1]]
# [1] "zhuyuanzhang"
# [[2]]
# [1] "zhuchongba" "zhuguorui"  "zhubaba"   
# [[3]]
# [1] "man"
# [[4]]
# [1] "emperor"
# [[5]]
# [1] "1328-1398"
# [[6]]
# [1] 70

# 查看各个数据的类型
str(zyzList) 
# List of 6
#  $ : chr "zhuyuanzhang"
#  $ : chr [1:3] "zhuchongba" "zhuguorui" "zhubaba"
#  $ : chr "man"
#  $ : chr "emperor"
#  $ : chr "1328-1398"
#  $ : num 70

list中选取数据的时候可以用[[索引值]]、[[“名称”]]和$名称。

# 上方的list只能有[[索引值]]来查找,因为我们没有给各个变数命名
zyzList[[2]][2]
# [1] "zhuguorui

# 增加下变数名称,就可以用[[“名称”]]和$名称来查找数据了
zyzListPro = list(Name = name,
                  Nickname = nickname,
                  Gender = gender,
                  Profession = profession,
                  BandD = birthAndDead,
                  Age = age)
zyzListPro[["Nickname"]]
zyzListPro[["Nickname"]][1]
zyzListPro$Nickname
zyzListPro$Nickname[1]
# [1] "zhuchongba" "zhuguorui"  "zhubaba"   
# [1] "zhuchongba"
# [1] "zhuchongba" "zhuguorui"  "zhubaba"   
# [1] "zhuchongba"

# 可以任意组合提取
sprintf("%s is a %s, maybe his age is %.2f",
        zyzListPro$Name,
        zyzListPro$Profession,
        zyzListPro$Age*2)
# [1] "zhuyuanzhang is a emperor, maybe his age is 140.00"
1.factor

R语言中很独特的一个数据结构就是factor。他是一种有阶层的向量(levels),一般叫他因子或是因素向量。

fourSeasons = c("spring", "summer", "autumn", "winter")
class(fourSeasons) # 文字向量
# [1] "character"

fourSeasonsFactor = factor(fourSeasons)
fourSeasonsFactor
class(fourSeasonsFactor) # 因子
# [1] spring summer autumn winter
# Levels: autumn spring summer winter
# [1] "factor"

预设的阶层(lever)是以A-Z的字母排序的(Levels: autumn spring summer winter),不过设置factor中的参数ordered = TRUE 与 levels = ,就可以根据自己的偏好做排序。

fourSeasonsFactor = factor(fourSeasons,ordered = TRUE,levels = c("summer", "winter", "spring", "autumn"))
fourSeasonsFactor
# [1] spring summer autumn winter
# Levels: summer < winter < spring < autumn

Console印出的lever会按照大小关系做排序,所以factor很适合用在有隐含顺序意义的文字向量。

temperatures = c("warm", "hot", "cold")
temperaturesFactor = factor(temperatures, ordered = TRUE, levels = c("cold", "warm", "hot"))
temperaturesFactor
# [1] warm hot  cold
# Levels: cold < warm < hot
file

本文由博客一文多发平台 OpenWrite 发布!

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

推荐阅读更多精彩内容