将多个对象放在一个向量中

时间:2016-04-26 16:30:05

标签: r

首先,如果问题标题有点通用,我很抱歉,但我不确定如何表达它。问题如下:

我有一大堆对象,这些对象都以下列方式命名:O1921,O1922,...,O2014。 我想把这些对象放到一个标题为“对象”的矢量中。

我尝试了以下内容:

> lambda<-1921:2014

> objects<-Olambda (This returns "object `Olambda not found')

然后我尝试了:

> objects<-O[lambda] (This returns "object `O' not found)

我尝试了很多其他方法,但仍然会遇到类似的错误。有谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

如果您已经有一个看起来像O1921,O1922等的矢量,那么试试这个:

objects <- vector_of_values

看起来你还没有那个向量,因为R正在抛出一个错误。它告诉你,环境中没有名为Olambda的对象。所以,你必须制作一个!

lambda <- 1921:2014
Olambda <- paste("O", lambda, sep = "")
objects <- Olambda

您可以进一步简化:

objects <- paste("O", lambda, sep = "")

根据您的评论,如果您想记录对象中的内容:

objects <- strsplit(objects, "O")
objects <- na.omit(as.numeric(unlist(objects))) 
log_objects <- log(objects)

这应该可以为您提供一些内容。

答案 1 :(得分:1)

如果您试图将对象存储到“向量”中,则此“向量”通常称为R中的列表。假设您的对象是回归结果或绘图,列表对象将全部采用它们。要使用您拥有的名称存储对象,可以使用以下命令:

myObjects <- mget(ls(pattern="^O[12]"))

只要没有其他具有相似名称的对象。否则,您必须优化正则表达式。

您可以从列表中提取其中一个对象,如下所示:

myObjects[[1]]

更好的是,myObjects是一个命名列表,因此您可以按原始名称引用对象:

myObjects[["O1921"]]