gpt4 book ai didi

根据名称用另一个列表元素替换列表元素

转载 作者:行者123 更新时间:2023-12-05 00:48:40 25 4
gpt4 key购买 nike

我有两个列表 m.list 和另一个 r.list。 m.list 有 NA值。对于那些拥有 NA 的人值,我想用 r.list 中的元素替换它。问题是当我使用 replace 时R 中的函数正在获取 r.list 的索引并返回不正确的值。以下是可重现的示例。有没有办法根据另一个列表中的元素名称替换一个列表的值?

m.list <- list(a= 1,b=NA,c=3,d=NA)

r.list <- list(a= 4,d=8,c=9)

mr.list <- replace(m.list, which(is.na(m.list)), r.list[which(is.na(m.list))])

这是我得到的输出 b 应该是 NA 并且 d 应该是 8:
> mr.list
$a
[1] 1

$b
[1] 8

$c
[1] 3

$d
NULL

这是所需的输出:
$a
[1] 1

$b
[1] NA

$c
[1] 3

$d
[1] 8

最佳答案

这是 modifyList 的选项

modifyList(m.list, r.list[intersect(names(r.list), names(which(is.na(m.list))))])
#$a
#[1] 1

#$b
#[1] NA

#$c
#[1] 3

#$d
#[1] 8

如果我们拆分代码,想法是找到 names在 'm.list' 中缺少该值,并且也在 'r.list'( intersect )中找到,然后使用 modifyList用 'r.list' 的子集替换 'm.list' 中的值
nm1 <- intersect(names(r.list), names(which(is.na(m.list))))
modifyList(m.list, r.list[nm1])

关于根据名称用另一个列表元素替换列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49222563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com