加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

带有空向量的填充列表会导致其长度发生变化

发布时间:2020-12-14 05:59:03 所属栏目:Java 来源:网络整理
导读:在下面的代码中,我期待长度为96的东西,但我得到一个长度为48的列表.你能解释一下这个结果吗? num_empty = 96empty_vecs = as.list(1:num_empty)for(i in 1:num_empty){empty_vecs[[i]] = c()}length(empty_vecs)[1] 48 现在我将回答导致我遇到这种行为的问
在下面的代码中,我期待长度为96的东西,但我得到一个长度为48的列表.你能解释一下这个结果吗?
num_empty = 96
empty_vecs = as.list(1:num_empty)
for(i in 1:num_empty){empty_vecs[[i]] = c()}
length(empty_vecs)

[1] 48

现在我将回答导致我遇到这种行为的问题.最初的问题是,“如何在R中列出空载体?”答案是“用上面的代码中的字符()替换c().”

解决方法

设置等于c()(也称为NULL)的列表元素会删除它们,因此该循环具有删除列表中每个其他元素的效果.要看到这一点,请考虑一个较小的示例,迭代打印出结果向量:
e <- list(1,2,3,4)
e
# [[1]]
# [1] 1
# 
# [[2]]
# [1] 2
# 
# [[3]]
# [1] 3
# 
# [[4]]
# [1] 4
# 
e[[1]] <- c()
e
# [[1]]
# [1] 2
# 
# [[2]]
# [1] 3
# 
# [[3]]
# [1] 4
# 
e[[2]] <- c()
e
# [[1]]
# [1] 2
# 
# [[2]]
# [1] 4

e[[3]] <- c()
e
# [[1]]
# [1] 2
# 
# [[2]]
# [1] 4

e[[4]] <- c()
e
# [[1]]
# [1] 2
# 
# [[2]]
# [1] 4

请注意,如果您确实想要创建96个NULL值的列表,则可以尝试:

replicate(96,c(),FALSE)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读