什么是R中矢量和列表数据类型之间的主要区别? 什么是使用(或不)这两个数据类型的优点和缺点?
我希望了解一些实例演示数据类型的使用情况。
什么是R中矢量和列表数据类型之间的主要区别? 什么是使用(或不)这两个数据类型的优点和缺点?
我希望了解一些实例演示数据类型的使用情况。
技术上名单是矢量,虽然很少会用这个词。 “名单”是几种模式之一,与其他被“逻辑”,“人物”,“数字”,“整数”。 你所呼叫的载体是严格r说法“原子”:
aaa <- vector("list", 3)
is.list(aaa) #TRUE
is.vector(aaa) #TRUE
列表是一个“递归”型,而原子向量不是:
is.recursive(aaa) # TRUE
is.atomic(aaa) # FALSE
你具有取决于它们是否是递归的,原子或具有尺寸属性(矩阵和阵列)不同的功能处理的数据对象。 但是,我不知道那的不同的数据结构“的优点和缺点”的讨论是一个足够关注的问题这么久。 要添加到什么托米说,除了列表能够保持其他载体的任意数量存在dataframes其是特定类型的列表,其具有定义其结构的尺寸属性的可用性。 不同于矩阵和阵列被真正折叠原子目的,dataframes可以容纳不同类型,包括因子类型。
列表是“递归”。 这意味着它们可以包含不同类型,甚至其他列表的值:
x <- list(values=sin(1:3), ids=letters[1:3], sub=list(foo=42,bar=13))
x # print the list
x$values # Get one element
x[["ids"]] # Another way to get an element
x$sub$foo # Get sub elements
x[[c(3,2)]] # Another way (gets 13)
str(x) # A "summary" of the list's content
列表被作为R用于表示数据集: data.frame
类本质上是一个列表,其中每个元素是一个特定类型的列。
另一个用途是代表一个模型时:从结果lm
返回一个包含了一堆有用的对象的列表。
d <- data.frame(a=11:13, b=21:23)
is.list(d) # TRUE
str(d)
m <- lm(a ~ b, data=d)
is.list(m) # TRUE
str(m)
因为所有元件是已知的具有相同类型的原子的载体(非列表等,但数字,逻辑和字符)是有用的。 这使得操作起来非常快。
正如有人谁只是得到进入R,而是来自一个和C / Java / Ruby的/ PHP / Python的背景,这里就是我想起来了。
一个list
实际上是一个数组+一个HashMap。 这是一个PHP关联数组。
> foo = list(bar='baz')
> foo[1]
'baz'
> foo$bar
'baz'
> foo[['bar']]
'baz'
甲vector
是固定类型的阵列/列表。 认为它像一个链表 - 因为把不同的项目进入一个链表是一个反模式反正。 这是在相同的意义上,SIMD / MMX /矢量单元使用这个词的向量。
这和类似的介绍性问题的回答中http://www.burns-stat.com/pages/Tutor/hints_R_begin.html
它意味着是一个温柔的介绍,让你和运行有R尽快。 在一定程度上它成功。
载体(一维阵列):可容纳数值,字符或逻辑值。 在一个矢量中的所有元素均具有相同的数据类型。
在R A名单类似于在工作或学校的待办事项列表:该列表上的不同项目的长度很可能不同,特点,那必须做的活动形式来完成,...
在R A 列表可以收集各种下一个名称的对象(即列表的名称)在一个有序的方式。 这些对象可以是矩阵,向量,数据帧,甚至其他列表等,甚至不要求这些目的以任何方式彼此相关。
你可以说,名单是某种超级数据类型:您可以几乎任何一条信息存储在它!
要构建您使用列表功能列表():my_list < -列表(COMP1,COMP2 ...)
到列表功能的参数是列表组件。 请记住,这些组件可以是矩阵,向量,其他列表,...
总之,列表和向量之间的主要区别是, 列表 r可让您收集各种下一个名称的对象(即列表的名称)在一个有序的方式。 这些对象可以是矩阵,向量,数据帧,甚至其他列表等,甚至不要求这些目的以任何方式...彼此相关的,而在一个矢量中的所有元素均具有相同的数据类型。
列表包括多个数据类型,如字符,数字,逻辑等。 但矢量仅包含类似类型的数据。 为前:
scores <- c(20,30,40,50)
student <- c("A","B","C","D")
sc_log <- c(TRUE,FALSE,FALSE,TRUE)
对于列表:
mylist <- list(scores,student,sc_log)
# search for class of mylist vector
#check structure of mylist using str() function.
str(mylist)
[1] list of 3
[1] $:num [1:4] 20 30 40 50
[2] $:chr [1:4] "A""B""C""D"
[3] $:log [1:4] TRUE FALSE FALSE TRUE
这意味着包含多个数据类型,如数字,在mylist.But字符和逻辑在向量列表会有所有元件的单个数据类型在该矢量
为前:
矢量:
vector1 <- c(1,2,3,4)
Class(vector1)
[1] "Numeric"
#which means all elements of vector containing single data type that is numeric only.