2017-02-06 2 views
0

Это трудно сделать воспроизводимым примером, поэтому я извиняюсь заранее.Невозможно использовать оператор @ на объектах s4, хранящихся в списке в R?

У меня есть список под названием mp3List который содержит wave объектов. Я генерирую его следующим образом: он заполняет список со 100 волновыми объектами, созданным с помощью readMP3.

mp3List <- vector("list", 100) 
for(i in UrlReadNames) 
{ 
    mp3List[which(UrlReadNames == i)]<-readMP3(i) 
} 

Структура волнового объекта выглядит следующим образом:

> str(ddd) 
Formal class 'Wave' [package "tuneR"] with 6 slots 
[email protected] left  : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ... 
[email protected] right : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ... 
[email protected] stereo : logi TRUE 
[email protected] samp.rate: num 44100 
[email protected] bit  : num 16 
[email protected] pcm  : logi TRUE 

Структура волнового объекта в списке выглядит следующим образом:

> str(mp3List[1]) 
List of 1 

$ :Formal class 'Wave' [package "tuneR"] with 6 slots 
.. [email protected] left  : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ... 
.. [email protected] right : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ... 
.. [email protected] stereo : logi TRUE 
.. [email protected] samp.rate: num 44100 
.. [email protected] bit  : num 16 
.. [email protected] pcm  : logi TRUE 

Теперь я пытаюсь использовать mp3List[1]@left для доступа к этой части объекта, но я получаю эту ошибку: Error: Attempting to get a "left" slot from an object of a basic class ("list") without slots

Я хочу использовать @ на этих объектах в списке, чтобы я мог писать для циклов для доступа к каждому волновому объекту в списке без необходимости вытаскивать их по отдельности.

ответ

0

[ в список возвращает подсписку. До экстракт индивидуальный компонент, используйте [[.

mp3List[[1]]@left 
+0

yup, так просто, спасибо за ответ, забыли о структурах списков, я буду принимать, когда мой срок закончился. –

Смежные вопросы