2013-11-01 93 views
1

R有点新,我在访问列表中的对象时遇到了一些麻烦。从列表中访问对象方法

创建我的列表中的对象是这样的:

myObjects <- vector("list", P) 
for(i in 1:10){ 
    myObjects[[i]] <- new.myObject() 
} 

然后我想访问一些方法,我在代码中创建的,所以我就来访问它们像这样:

myObjects[1]@myMethod 

然而,当我这样做,我得到的错误: 错误:试图从基类(“名单”)的对象获取插槽“myMethod的”无缝隙

当我刚刚有1个OBJE ct我的代码工作正常,但是在将它放入列表后,我不知道如何将它从列表中取出。我知道R在很多时候都把事物当作'大小为1的列表'来处理,但它在这里并不适合我。有没有办法让对象脱离列表而不是包含我的对象的大小为1的列表?

+1

看一看哈德利的材料在这里子集化http://adv-r.had.co.nz/Subsetting.html – sckott

+0

您没有显示)的任何使用setClass的'('这将有望为建设S4 -目的。与某些语言不同,没有内置的“新”操作。你不能仅仅假设R就像你最喜欢的OOP语言一样。 –

+0

@DWin:我在其他地方都有这个设置。正如我所提到的,我的代码使用1个对象,但不在列表中。 – Fozefy

回答

1

[运算符为您提供了一个子列表:myObjects[1]是一个长度为1的列表。

[[是获取列表项的运算符:myObjects[[1]]是列表中的第一项。

所以myObjects[[1]]@myMethod是应该在这里工作。

+0

Sheesh,比我想象的要简单得多,100%解决了我的问题。我确实知道这一点,我想这只是我的想法。至少我知道这是一个长度为1的列表与我猜想的对象相关的问题。 – Fozefy