将每个3个位置的新对象添加到列表中

时间:2018-12-27 17:04:26

标签: r list

我正在尝试处理称为n的音频对象列表,类列表:

>head(n)

[[1]]

Wave Object
        Number of Samples:      88516
        Duration (seconds):     2.01
        Samplingrate (Hertz):   44100
        Channels (Mono/Stereo): Stereo
        PCM (integer format):   TRUE
        Bit (8/16/24/32/64):    16 


[[2]]

Wave Object
        Number of Samples:      88552
        Duration (seconds):     2.01
        Samplingrate (Hertz):   44100
        Channels (Mono/Stereo): Stereo
        PCM (integer format):   TRUE
        Bit (8/16/24/32/64):    16 

我想每三个位置介绍另一个波浪元素。我在这里看到了不同的解决方案,但是没有人在工作。参见:

i <- 1
while(i==i*3) {
    n[[i]] <- new_wave_element
    i <- i + 1
}

什么也没发生(是stackoverflow解决方案)...但是,例如

append(n, list(x=new_wave_element), 3)

在这种情况下可以正常工作,但不能循环使用。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果x是您的波浪对象列表,则应该可以使用。

set.seed(1)

x <- as.list(sample(1:10, 4))

l <- list()

s <- seq(from=1, by=3, length.out=length(x))

for (i in 1:length(x)) {
    l[[s[i]]] <- x[[i]]
}

set.seed(1)

x <- as.list(sample(1:10, 4))
s <- seq(from=1, by=3, length.out=length(x))

l2 <- vector("list", length=max(s))
l2[s] <- x