免费试用
banner

R语言入门秘录7/25:创建向量

作者: afenxi来源: afenxi时间:2017-04-03 09:29:400

摘要:数据分析网整理自tbkken的《R语言入门25招》,一招招技能带你走进R语言。

问题

要创建一个向量(vector)。

解决方案

用c(…)操作符根据给定的值创建向量。

讨论

向量不仅仅是一种数据结构,它还是R的核心部件。向量中可以包含数字、字符串或逻辑值,但不能把这些东西同时放在一个向量中。可以用c(…)操作符将简单的元素构建成向量:

代码

> c(1,1,2,3,5,8,13,21)

[1] 1 1 2 3 5 8 13 21

> c(1*pi, 2*pi, 3*pi, 4*pi)

[1] 3.141593 6.283185 9.424778 12.566371

> c("Everyone","loves", "stats.")

[1] "Everyone" "loves""stats."

> c(TRUE,TRUE,FALSE,TRUE)

[1] TRUE TRUE FALSE TRUE

如果c(…)操作符的参数本身就是向量,那么c(…)就会将这些向量拼接成单独一个向量:

代码

> v1 <- c(1,2,3)

> v2 <- c(4,5,6)

> c(v1,v2)

[1] 1 2 3 4 5 6

向量中不能同时包含多种数据类型,例如不能把数字和字符串放在同一个向量中。如果用多种元素构建向量,R会尝试将其转换成同一种数据类型:

代码

> v1 <- c(1,2,3)

> v3 <-c("A","B","C")

> c(v1,v3)

[1] "1" "2""3" "A" "B" "C"

上面的代码视图用数字和字符串创建向量。在创建向量前,R将所有的数字都转换成了字符串,使得向量中的元素都是同一数据类型。从技术上说,只有两个模式(mode)相同的数据元素才能共存于一个向量中。3.1415的模式是数字,而“foo”的模式则是字符:

代码

> mode(3.1415)

[1] "numeric"

> mode("foo")

[1] "character"

这两种模式是不兼容得。为了将它们放在一个向量中,R将3.1415转换成字符模式,使其跟“foo”兼容:

代码

> c(3.1415, "foo")

[1] "3.1415" "foo"

> mode(c(3.1415, "foo"))

[1] "character"

注意:c是一个泛型操作符,就是说它可以用于各种数据类型,而不仅仅是向量。但它对各种数据类型的处理结果可能会跟读者的想象有差别,所以在用c处理其他数据类型和对象时要注意检查操作的结果。

banner
看过还想看
可能还想看
热点推荐
Yonghong的价值观:以卓越的数据技术为客户创造价值,实现客户成功。
免费试用