覆盖两个列表之间的单个对应元素
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
【讨论】:
以上是关于覆盖两个列表之间的单个对应元素的主要内容,如果未能解决你的问题,请参考以下文章