如何检查列表元素是否存在。这是一个列表列表,例如我想检查第三个元素 l1[[3]] 是否存在。我试过 is.null(l1[["3"]]) 但是不管它是否存在它都返回false,如果我使用 is.null(l1[[3]]) 它会给出下标的错误绑定,以防它不存在但不为真。我该如何切
tl; dr:
如果要检查元素是否n存在,即使在列表末尾或空列表中进行检查,请使用:
length(mylist) >= n # TRUE indicates exists. FALSE indicates DNE
Run Code Online (Sandbox Code Playgroud)
对于嵌套列表,请确保检查正确的列表。例如:
length(outerlist[[innerlist]]) >= n
Run Code Online (Sandbox Code Playgroud)
# SAMPLE DATA
mylist <- as.list(LETTERS[1:5])
[[1]]
[1] "A"
[[2]]
[1] "B"
[[3]]
[1] "C"
[[4]]
[1] "D"
[[5]]
[1] "E"
Run Code Online (Sandbox Code Playgroud)
在元素 3 和 6 中测试 NULL。不是我们正在寻找的信息。
is.null(mylist[[3]])
# FALSE
is.null(mylist[[6]])
# Error in mylist[[6]] : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)
相反,我们检查列表的长度:
length(mylist) >= 3 # TRUE
length(mylist) >= 5 # TRUE
length(mylist) >= 6 # FALSE
Run Code Online (Sandbox Code Playgroud)
删除第三个元素。请注意,不会保留“空槽” 。(即,元素 4,变成元素 3,等等。)
mylist[[3]] <- NULL
[[1]]
[1] "A"
[[2]]
[1] "B"
[[3]]
[1] "D"
[[4]]
[1] "E"
length(mylist) >= 3 # TRUE
length(mylist) >= 5 # FALSE
length(mylist) >= 6 # FALSE
Run Code Online (Sandbox Code Playgroud)
emptyList <- list()
length(emptyList) # 0
nestedList <- list( letters=list("A", "B", "C"), empty=list(), words=list("Hello", "World"))
length(nestedList)
# [1] 3
lapply(nestedList, length)
# $letters
# [1] 3
#
# $empty
# [1] 0
#
# $words
# [1] 2
Run Code Online (Sandbox Code Playgroud)
myListWithNull <- list("A", "B", NULL, "D")
is.null(myListWithNull[[3]])
# TRUE
length(myListWithNull) >= 3
# TRUE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6569 次 |
| 最近记录: |