2013-11-01 91 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