将向量与类似名称相结合

时间:2012-04-11 18:42:02

标签: r

我不熟悉R代码,我试图解决这个问题但没有成功。请帮帮我!

如果我有这种载体

> x1 <- c(5,7,9)
> x2 <- c(6,3,4)
....
> xn <- c(1,2,3) 

我喜欢将它们组合起来

  

结果&lt; - cbind(x1,x2,...,xn)

怎么说这个 x1,x2,...,xn

谢谢!

3 个答案:

答案 0 :(得分:5)

您可以将ls与模式参数

一起使用
x.data <- ls(pattern='^x.?')

这会返回可与getsapply

一起使用的名称列表
sapply(x.data, get)
#  x1 x2 xn
# [1,]  5  6  1
# [2,]  7  3  2
# [3,]  9  4  3

答案 1 :(得分:4)

虽然可以解决这个问题,但真正的解决方案可能是使用另一种方法来存储你的向量。你是怎么得到它们的?

通常情况下,当您有多个时,最好将列表结构中的向量作为单独的全局变量。

这是一种方式

x <- list(x1 = c(5,7,9), x2=c(6,3,4), xn=c(1,2,3))

x$x2 # the x2 vector
str(x) # prints an overview of x

# combine them into a matrix
do.call(cbind, x)

这是从文件到列表中读取一堆向量的一种方法:

# Read in 10 vectors into x
x <- lapply(1:10, function(i) scan(paste("myvec",i,".txt", sep=""))
x[[3]] # the vector in myvec3.txt
str(x) # prints an overview of x

答案 2 :(得分:0)

c(x1, x2, ... xn)

> x1 <- c(5,7,9)
> 
> x2 <- c(6,3,4)
>
> xn <- c(1,2,3)
> c(x1, x2, xn)
[1] 5 7 9 6 3 4 1 2 3
> 
> matrix(c(x1, x2, xn), ncol=3)
     [,1] [,2] [,3]
[1,]    5    6    1
[2,]    7    3    2
[3,]    9    4    3
>