摘要:
在下载财务数据(OHLC)期间,有时会获得嵌入在“列表中的列表”中的NULL值,如下面的代码所述。
当出现NULL时,则认为需要删除数据行(OHLC)。“列表中的列表”将在稍后阶段移至数据帧并转换为xts。如果列表中出现NULL,则由于抱怨列表中对象数量不同,移至数据框和xts将会失败。
需要:
我需要能够找到所有NULL并通过它们的位置(哪个列表?)来识别它们。然后,基于标识,我将删除相同位置的所有值,例如。如果mylist $ high [1]中存在NULL,那么我将删除:
mylist$open[1]
mylist$high[1]
mylist$low[1]
mylist$close[1]
其他观察结果:
请注意,在以下情况下,信息i仍为列表格式,因此还没有数据帧和xts中存在的数据行。
在不属于列表的变量中识别NULL可以正常工作,如下面的代码所述。
我的R码:
# NULL in lists.
open <- list(1, 2, 3)
high <- list(1, 2, 3)
low <- list(1, 2, 3)
close <- list(1, 2, 3)
mylist <- list(
open = open,
high = high,
low = low,
close = close
)
mylist$high[1] <- list(NULL) # Adding null (for test purpose).
ls.str(mylist)
is.null(mylist$high[[1]]) # Returns zero length, correct.
length(mylist$high[[1]]) # Returns true, correct
# NULL in variable.
c <- NULL
length(c) # Returns zero length, correct.
is.null(c) # Returns true, correct
结果如下:
> ls.str(mylist)
close : List of 3
$ : num 1
$ : num 2
$ : num 3
high : List of 3
$ : NULL
$ : num 2
$ : num 3
low : List of 3
$ : num 1
$ : num 2
$ : num 3
open : List of 3
$ : num 1
$ : num 2
$ : num 3
处理所需职位后的外观:
(每个列表(打开,高,低,关闭)中位置为[1]的所有值都是 删除)
> ls.str(mylist)
close : List of 2
$ : num 2
$ : num 3
high : List of 2
$ : num 2
$ : num 3
low : List of 2
$ : num 2
$ : num 3
open : List of 2
$ : num 2
$ : num 3