imap_dfr绑定R中列表列表中的_行
我试图在imap_dfr绑定R中列表列表中的_行,r,R,我试图在imap\u dfr函数中使用bind\u rows。我有列表列表,因此我希望将“1”、“650”和“1300”(都是数据帧)的结果绑定在一起。我正在尝试使用map\u dfr功能,但似乎无法使其正常工作。我还试图创建一个新的列“model”,其中包含它出现的列表列表 x2 <- imap_dfr( shap_values_results[[1]][[1]]$shap_score, shap_values_results[[1]][[650]]$shap_score,
imap\u dfr
函数中使用bind\u rows
。我有列表列表,因此我希望将“1”、“650”和“1300”(都是数据帧)的结果绑定在一起。我正在尝试使用map\u dfr
功能,但似乎无法使其正常工作。我还试图创建一个新的列“model”,其中包含它出现的列表列表
x2 <- imap_dfr(
shap_values_results[[1]][[1]]$shap_score,
shap_values_results[[1]][[650]]$shap_score,
shap_values_results[[1]][[1300]]$shap_score,
.f = bind_rows,
.id = "model"
)
在这里,我们已经从
列表中提取了data.frame,并且在imap\u dfr
中不需要.f=bind_rows
,相反,它可以只是一个占位符标识(I
)
out <- imap_dfr(list(`1` =
shap_values_results[[1]][[1]]$shap_score,
`650` = shap_values_results[[1]][[650]]$shap_score,
`1300` = shap_values_results[[1]][[1300]]$shap_score),
.f = I,
.id = "model"
)
除上述内容外,最好以自动方式进行,即不重复提取
map_dfr(set_names(shap_values_results[[1]][c(1, 650, 1300)],
unique(names(shap_values_results[[1]][c(1, 650, 1300)]))), ~
.x$shap_score, .id = "model")
添加了列表列表的结构。我认为bind_rows
和.id
有效…我的bind_rows
方法的“问题”是它创建了一个.id
为“1”、“2”和“3”的数据帧。我希望它能将.id
列创建为“1”、“650”和“1300”。你能添加一个小的可复制数据集吗?我在.f(.x[[I]]、.y[[I]]、…)中得到这个错误错误:未使用的参数(.y[[I]],shap_值结果[[1][[650]]$shap_分数,shap_值结果[[1][[1300]$shap_分数)
@user113156我想第一个选项现在应该可以用了第一个选项很好用。但是,它对列表数据中的更改不是动态的。也许在dplyr
管道中使用case\u就足够了。是的!我想这对我很有用:outout@user113156我正在用你的版本更新我的帖子
out <- imap_dfr(list(`1` =
shap_values_results[[1]][[1]]$shap_score,
`650` = shap_values_results[[1]][[650]]$shap_score,
`1300` = shap_values_results[[1]][[1300]]$shap_score),
.f = I,
.id = "model"
)
out <- bind_rows(list(`1` = shap_values_results[[1]][[1]]$shap_score,
`650` = shap_values_results[[1]][[650]]$shap_score,
`1300` = shap_values_results[[1]][[1300]]$shap_score), .id = 'model')
map_dfr(set_names(shap_values_results[[1]][c(1, 650, 1300)],
unique(names(shap_values_results[[1]][c(1, 650, 1300)]))), ~
.x$shap_score, .id = "model")