R中一切都是vector

0、可以说R语言中一切结构体的基础是vector!

R中一切都是vector,vecotor的每个component必须类型一致(character,numeric,integer....)!
vector 是没有dimensions的也没有attributes,所以去掉dimension和attributes就成了vector(其实dimension可以作为attributes的一个属性存在但是named** 命名**一般不会作为attributes的属性的)
解释下

0.1为何没有dimensions?

------这里其实纠正我一个观点:我一直以一个点是有维度的,但其实点是标量

What I don't understand is why vectors (with more than one value) don't 
have dimensions. They look like they do have 1 dimension. For me no 
dimension 没有dimension就是标量,比如一个点就是标量. Like in geometry: a point has no dimension, 
a line has 1, a square has 2, a cube 3 and so on. Is it because of some 
internal process? The intuitive geometry way of thinking is not 
programmatically relevant?

0.2、没有attributes,如果加了attributes怎么样?

factors是character data,但是要编码成 numeric mode,每个number 关联一个指定的string,称为levels。比如

 1 > fac<- factor(c("b", "a", "b"))
 2 > dput(fac)
 3 structure(c(2L, 1L, 2L), .Label = c("a", "b"), class = "factor")
 4 > levels(fac)
 5 [1] "a" "b"
 6 > fac
 7 [1] b a b
 8 Levels: a b
 9 > as.numeric(fac)
10 [1] 2 1 2
11 factor组成: integer vector+ levels attributes

1、arrary和vecotr的转换

if we remove dimension part array just a vector----array去掉属性dimension就是vector

>nota=array(1:4,4)//只有一个dimension 的array
>dim(not1)<-NULL
>dput(nota)
1:4
>is.array(nota)
>is.vector(nota)

2、array和matrix的转换

arrays are matrices with more than 2 dimensions.<==>matrices are arrays with only 2 dimensions
Arrays can have any number of dimensions including 1, 2, 3, etc.
比如只有一个维度的array nota=array(1:4,4)

3、list和vecotor的转换a list with no attributes is a vecotor,所以如下没有设置属性的list是vector 的

> vl<- list(sin, 3, "a")
> is.vector(vl)
[1] TRUE
> class(vl)
[1] "list"
> attributes(vl)
NULL
注意names 不是属性的,所以namedlist依旧是vector
> my.list <- list(num=1:3, let=LETTERS[1:2])
> names(my.list)
[1] "num" "let"
> is.vector(my.list)
[1] TRUE

 

posted @ 2015-10-21 11:05  随遇而安jason  阅读(2228)  评论(0编辑  收藏  举报