这很难做出一个可重复的例子,所以我很抱歉。
我有一个名为mp3List
的列表,其中包含wave
个对象。我生成它是这样的:它填充了一个列表,其中包含使用readMP3
生成的100个波形对象。
mp3List <- vector("list", 100)
for(i in UrlReadNames)
{
mp3List[which(UrlReadNames == i)]<-readMP3(i)
}
wave对象的结构如下所示:
> str(ddd)
Formal class 'Wave' [package "tuneR"] with 6 slots
..@ left : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ...
..@ right : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ...
..@ stereo : logi TRUE
..@ samp.rate: num 44100
..@ bit : num 16
..@ pcm : logi TRUE
列表中wave对象的结构如下所示:
> str(mp3List[1])
List of 1
$ :Formal class 'Wave' [package "tuneR"] with 6 slots
.. ..@ left : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ...
.. ..@ right : int [1:14772096] 0 0 0 0 0 0 0 0 0 0 ...
.. ..@ stereo : logi TRUE
.. ..@ samp.rate: num 44100
.. ..@ bit : num 16
.. ..@ pcm : logi TRUE
现在我尝试使用mp3List[1]@left
来访问该对象的这一部分,但我收到此错误:Error: Attempting to get a "left" slot from an object of a basic class ("list") without slots
我想在列表中的这些对象上使用@,这样我就可以编写for循环来访问列表中的每个wave对象,而不必单独拉出每个wave对象。
答案 0 :(得分:0)
[
返回子列表。要提取单个组件,请使用[[
。
mp3List[[1]]@left