【发布时间】:2019-05-10 13:57:03
【问题描述】:
我像这样使用 purrr:::iwalk,但它并没有达到我想要的效果:
purrr:::iwalk(DGE_tables, ~ .x[-which(.x$column1 %in% VectorOfSpecificValues),])
DGE_tables 是数据框列表。在这所有数据框中,我想删除在 column1 中具有特定值的行。数据帧具有相同的结构。
是否可以使用 purrr:::iwalk 做到这一点?还是有更好的方法来做到这一点?
编辑:一个例子:
数据框列表:
DGE_tables
# Display
$dataframe1
column1 column2
1 to_delete 56
2 to_keep 45
$dataframe2
column1 column2
1 to_delete 78
2 to_keep 27
...
所以我想删除 $column1 = "to_delete" 的行。像这样:
# wanted result
$dataframe1
column1 column2
1 to_keep 45
$dataframe2
column1 column2
1 to_keep 27
...
【问题讨论】:
-
你能展示一个可重现的小例子吗
-
为什么不简单地
map(DGE_tables, ~filter(.x, column1 != "to_delete")) -
walk函数用于产生副作用——它们本身不会返回任何东西。它们对于保存文件很有用,然后继续使用您保存的数据。您可能需要一个map函数,它会执行您的操作,然后将返回的数据帧传递给下一个管道步骤 -
@r2evans 是的,谢谢。我永远无法完全正确地解释它们。
walk绝对是棘手的。map更适合这种情况。 -
它返回任何东西的事实是(我猜)允许它在管道中间工作,而不仅仅是在末端。如果这不是一个考虑因素,那么在我看来,任何在任何 prog 语言中调用类似“walk”的函数的东西都可能不会安全地假设任何返回值,因为它的意图是副作用。 *耸耸肩*