Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr管道-如何更改原始数据帧_R_Dplyr_Data Cleaning - Fatal编程技术网

dplyr管道-如何更改原始数据帧

dplyr管道-如何更改原始数据帧,r,dplyr,data-cleaning,R,Dplyr,Data Cleaning,不使用管道时,可以使用以下命令更改原始daframe df<-slice(df,-c(1:3))%>% # delete top 3 rows df<-select(df,-c(Col1,Col50,Col51)) # delete specific columns 我想更改原来的df。您完全可以使用类似df%。。。或df%>%…->df。但您也可以避免冗余,即在管道的开头使用magrittr复合赋值运算符%%两次声明df 来自magrittr小插曲: 复合分配管道操作符%%

不使用管道时,可以使用以下命令更改原始daframe

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

我想更改原来的df。

您完全可以使用类似df%。。。或df%>%…->df。但您也可以避免冗余,即在管道的开头使用magrittr复合赋值运算符%%两次声明df

来自magrittr小插曲:

复合分配管道操作符%%可以用作链中的第一个管道。其效果是将管道的结果指定给左侧对象,而不是像往常一样返回结果

用你的代码,我们可以

library(magrittr)  ## came with your dplyr install
df %<>% slice(-(1:3)) %>% select(-c(Col1, Col50, Col51))
注意,因为我们有一个数据帧,所以我们也可以使用setNames stats或set_names magrittr来代替set_colnames


感谢Steven Beaupre添加了小插曲中的注释。

然后执行df%slice-c1:3%>%select-cCol1、Col50、col51或将作业放在末尾(如果愿意):df%>%…->D为图书馆Magrittr;df%%slice-1:3%>%select-cCol1、Col50、Col51。我们可以使用%%重新分配原始数据帧。这里df将被更改。在这两者之间可以有一个通用的r语句吗?当我在管道语句之间添加一个colnames函数调用时,我得到一个错误df%%colnamesdf%slice-c1:3%%>%select-cCol1,Col50,col51我为下面的问题道歉,但由于这个线程可能对其他人有用,我将它放在这里。如果我想进行一个向量赋值,而该赋值不是dplyr/magittr包中函数的一部分,比如df%%vector\u columnnames%set\u collnamesvector\u columnnames%>%slice-c1:3%>%delete top 3 rows select-cCol1、Col50、Col51,该怎么办。未执行vector_columnnames语句。关于如何在管道中设置临时向量,有什么建议吗?如果df是一个数据帧,那么setNames的工作方式就不会像set_colnames那样好吗?是的。setNames也可以工作。set_colnames是一个magrittr“extract”。值得注意的是,不可变性是一种非常有价值的编程策略。基本上,不要过度写入对象。这样,您可以按任何顺序重新运行和调试代码的任何部分。因此,也许可以将第一个命名为df.original,第二个命名为df.final,同时避免%%。
library(magrittr)  ## came with your dplyr install
df %<>% slice(-(1:3)) %>% select(-c(Col1, Col50, Col51))
df %<>% 
    set_colnames(sprintf("Col%d", 1:ncol(.))) %>% 
    slice(-(1:3)) %>%
    select(-c(Col1,Col50,Col51))