不能对存储在 R 列表中的 s4 对象使用 @ 运算符?
Can't use @ operator on s4 objects stored in a list in R?
这很难做一个可重现的例子,所以我提前道歉。
我有一个名为 mp3List
的列表,其中包含 wave
个对象。我这样生成它:它用 readMP3
.
生成的 100 个 wave 对象填充一个列表
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 对象,而不必单独取出每个对象。
[
一个列表 returns 一个子列表。要提取 单个组件,请使用[[
。
mp3List[[1]]@left
这很难做一个可重现的例子,所以我提前道歉。
我有一个名为 mp3List
的列表,其中包含 wave
个对象。我这样生成它:它用 readMP3
.
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 对象,而不必单独取出每个对象。
[
一个列表 returns 一个子列表。要提取 单个组件,请使用[[
。
mp3List[[1]]@left