在R中,有没有办法将向量指定为* literal *?

时间:2014-09-06 18:12:32

标签: r vector literals

[刚刚开始学习R]

说,我想创建一个值为1 4 6 8的向量。这些都不起作用:

x <- [1, 4, 6, 8]
x <- [1 4 6 8]

有没有办法使用文字符号创建矢量,即不使用函数等?

2 个答案:

答案 0 :(得分:3)

解决您的第一个问题

  

有没有办法使用文字符号创建矢量,即没有   使用函数等?

你可以用一种模仿的方式来创建一个向量,这是你使用&#34;文字符号&#34;以上;但技术上(几乎)R中的所有内容都是函数调用,甚至是括号索引[和对象赋值<-。例如,您可以执行类似

的操作
x <- NULL
x[1:4] <- 1:4
##
> x
[1] 1 2 3 4

但是再次[<-:是函数 - 通过键入?"[<-"?"["来查看帮助文件。这是否更加尴尬&#34;比你的选择当然是主观的,但一旦你习惯了R语言,你很可能不会再给它一个想法。我个人更喜欢像x[1, 2, 3, 4]这样的东西,你可以在Python,Julia等中做...无论如何,你的第一个例子对vector无效,因为你在R语法中使用(n-1) )逗号代表(n)维度(在这种情况下)。例如,您可以创建一个像

这样的三维数组
Y <- array(1:27,dim=c(3,3,3))
> Y
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

, , 3

     [,1] [,2] [,3]
[1,]   19   22   25
[2,]   20   23   26
[3,]   21   24   27

and access elements as 

> Y[1,1,3]
[1] 19
> Y[1,1,1]
[1] 1
> Y[1,2,3]
[1] 22

但显然这不是(一维)向量的情况。 关于速度的另一点,由于您提出的语法无效,因此无法对此进行准确测试。

答案 1 :(得分:1)

另一种方法是创建一个列表,然后将其转换为这样的矢量:

x <- unlist(list(1,4,6,8))