gpt4 book ai didi

r - dplyr Pipes - 如何更改原始数据框

转载 作者:行者123 更新时间:2023-12-02 06:16:03 25 4
gpt4 key购买 nike

当我不使用管道时,我可以使用此命令更改原始数据框

df<-slice(df,-c(1:3))%>% # delete top 3 rows
df<-select(df,-c(Col1,Col50,Col51)) # delete specific columns

如何用管道做到这一点?我尝试了这个,但是 sliceselect 函数不会更改原始数据帧。

df%>%
slice(-c(1:3))%>%
select(-c(Col1,Col50,Col51))

我想更改原来的 df。

最佳答案

您绝对可以使用诸如 df <- df %>% ... 之类的习惯用法来完成分配或df %>% ... -> df 。但您也可以通过使用 df 来避免冗余(即,声明 magrittr 两次)。复合赋值运算符%<>%在管道的开头。

来自magrittr小插图:

The compound assignment pipe operator %<>% can be used as the first pipe in a chain. The effect will be that the result of the pipeline is assigned to the left-hand side object, rather than returning the result as usual.

通过您的代码,我们可以做到

library(magrittr)  ## came with your dplyr install
df %<>% slice(-(1:3)) %>% select(-c(Col1, Col50, Col51))

此管道 df进入表达式并更新 df结果。

更新:在评论中,您注意到设置列名称的问题。幸运的是magrittr提供了在管道中设置属性的函数。请尝试以下操作。

df %<>% 
set_colnames(sprintf("Col%d", 1:ncol(.))) %>%
slice(-(1:3)) %>%
select(-c(Col1,Col50,Col51))

请注意,由于我们有一个数据框,因此我们还可以使用 setNames() (统计)或set_names() (magrittr) 代替 set_colnames() .

<小时/>

感谢 Steven Beaupre 添加插图中的注释。

关于r - dplyr Pipes - 如何更改原始数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335636/

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