想象一下我有一个清单
l <- list("a" = 1, "b" = 2)
和一个数据框
id value
a 3
b 4
我想将id与列表名称匹配,并使用数据框中的值对该列表应用一个函数。例如,我想要数据框中的值和列表中相应值的总和,我得到
id value
a 4
b 6
有人知道吗?
编辑: 一种。 我只是想扩大这个问题。现在,列表的每个元素中都有多个值。
l <- list("a" = c(1, 2), "b" =c(1, 2))
我仍然想要总和
id value
a 6
b 7
答案 0 :(得分:4)
我们可以match
的{{1}}和names
的数据帧list
id
来unlist
,然后将其添加到{{ 1}}
list
编辑
如果列表中有多个条目,则匹配后需要value
每个列表。我们可以做到
df$value <- unlist(l[match(df$id, names(l))]) + df$value
df
# id value
#1 a 4
#2 b 6
答案 1 :(得分:1)
您只需要
df$value=df$value+unlist(l)[df$id]# vector have names can just order by names
df
id value
1 a 4
2 b 6
尝试用罗纳克语回答
l <- list("b" = 2, "a" = 1)
unlist(l)[as.character(df$id)]# if you id in df is factor
a b
1 2
更新
df$value=df$value+unlist(lapply(l,sum))[df$id]