如何删除循环中的列表元素

时间:2017-11-02 10:59:26

标签: r list for-loop

我正在尝试在for-loop中创建一个列表,每个步骤i=1:200都会更新。

就我而言,在每个步骤i中,我都需要列表元素i+1i+2,仅此而已。

我最终会得到一个长度为202的列表,我希望这会大大减慢我的计算速度(当前200步的时间约为1小时)。

为了缩短列表,我想删除我不需要的每个列表元素i(即所有i = i)。

不幸的是,我试图简单地删除for-loop中的列表元素 mylist[[i]]<-NULLmylist<-mylist[-i]。两者都在循环外工作正常,但不在循环内部。这是一个简短的例子:

mylist<-list()
for (i in 1:3){
  mylist[[i+1]]<-c(1:10)*i
  mylist[[i]]<-NULL}
mylist

mylist<-list()
for (i in 1:3){
  mylist[[i+1]]<-c(1:10)*i
  mylist<-mylist[-i]}
mylist
mylist[[i]]<-NULL
mylist<-mylist[-i] 

1 个答案:

答案 0 :(得分:0)

设置为NA是否适合您?

mylist<-list()
for (i in 1:100){
  mylist[[i+1]]<-c(1:10)*i
  mylist[[i+2]]<-c(11:20)*i
  mylist[[i]] <- NA
}
mylist
# [[1]]
# [1] NA
# ...
# [[100]]
# [1] NA
#
# [[101]]
# [1]  100  200  300  400  500  600  700  800  900 1000
#
# [[102]]
# [1] 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000