覆盖两个列表之间的单个对应元素

Posted

技术标签:

【中文标题】覆盖两个列表之间的单个对应元素【英文标题】:Overwrite single corresponding elements between two lists 【发布时间】:2016-08-04 10:18:35 【问题描述】:

我有一个小问题:

假设有两个列表“default”和“example”,每个列表由 5 个具有相同名称的元素组成(“p1”、“p2”、“p3”、“p4”、“p5”)。

如果示例的“p-values”具有分配给它的值,则该值将保留。

如果“p-value”没有分配给它的值(NA),则应使用默认的相应“p-value”来替换间隙。

我知道您可以使用 for 循环遍历每个元素,并在 for 循环中构造一个 if 循环,但是否有更优雅的解决方案?

这里是一个例子:

example=list(p1=2,p2=3,p3=4,p4=NA,p5=NA)
default=list(p1=26,p2=34,p3=43,p4=11,p5=98)

【问题讨论】:

请分享您的数据,而不是描述它。 子集和替换使用is.na()。像example[ is.na(example)] 可能相关帖子:***.com/questions/19253820/… 【参考方案1】:

试试这个:

# assign matching p-value from default
example[ is.na(example) ] <- default[ is.na(example) ]

# result
example

# $p1
# [1] 2
# 
# $p2
# [1] 3
# 
# $p3
# [1] 4
# 
# $p4
# [1] 11
# 
# $p5
# [1] 98

【讨论】:

以上是关于覆盖两个列表之间的单个对应元素的主要内容,如果未能解决你的问题,请参考以下文章

将两个列表合并成字典的方法

构建应用程序以在单个 UITableView 中显示两个列表的最佳方法是啥(在数据集之间切换)

比较Django模板中两个列表的对应元素

while 循环中的单个删除子句正在删除两个元素

查找两个列表列列表之间的共同元素?

两个列表之间的差异