首先,如果问题标题有点通用,我很抱歉,但我不确定如何表达它。问题如下:
我有一大堆对象,这些对象都以下列方式命名:O1921,O1922,...,O2014。 我想把这些对象放到一个标题为“对象”的矢量中。
我尝试了以下内容:
> lambda<-1921:2014
> objects<-Olambda (This returns "object `Olambda not found')
然后我尝试了:
> objects<-O[lambda] (This returns "object `O' not found)
我尝试了很多其他方法,但仍然会遇到类似的错误。有谁知道怎么做?
答案 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"]]