【发布时间】:2020-10-28 23:06:30
【问题描述】:
我有一个带有嵌套列表列的数据框,我想通过使用 purrr 包迭代行来根据另一列中的值替换其中一个嵌套列中的值。
我已尝试按照下面的示例使用map2,但我发现该函数正在用向量替换整个列表/嵌套数据框,而不是仅替换目标列。
我想我可能需要使用对 map 的嵌套调用或类似的方法,但我的尝试没有成功。
使用下面的简单示例,对于数据框df3 中的每一行,我想将嵌套data 列中group2 中的所有值替换为group1 中的值,这样@ 中的列987654328@ 保存在df4$data_corrected 中。
df1 <-tibble(class = seq(1:5), group1 = c(rep("a",3),rep("b",2)))
df2 <-tibble(class = rep(1:5, each = 3), group2 = c(rep(c("a","b","b","a","b"),3)), x = runif(15))
df2 <- nest(df2, data = c(x, group2))
df3 <- left_join(df1, df2, by = "class")
df4 <- df3 %>% mutate(data_corrected =
map2(data, group1, ~ replace(.x$group2, .x$group2 != .y, .y)))
df4$data
df4$data_corrected
我已经使用上述方法成功过滤了行,但它不能转换为替换值。
谢谢!
【问题讨论】:
标签: r list dataframe replace purrr