【发布时间】:2018-04-23 02:09:11
【问题描述】:
library(tidyverse)
使用下面的示例数据,我有两个数据框 - Df1 和 Df2。我正在尝试创建一个按字符串选择列的简单函数 - 在这种情况下,两个数据框中的列都以“Person”开头,以及所有包含“Phone”的列。
接下来,我想将两个数据框中的“Person”列重命名为“Id”。
但是,我无法让重命名功能正常工作。
这是第一次尝试......
Funs<-function(Df){
Df%>%select(starts_with("Person"),contains("Phone"))%>%
rename_at(vars(starts_with("Person"),"Id"))
}
以下是我尝试过的“重命名”的其他一些变体,但没有奏效...
rename_at(vars(starts_with("Person"),funs("Id"=.)))
rename("Id"=names(.)[1])
我应该如何纠正这个问题?我试图在这个网站上找到类似的问题,因为它看起来很简单,但我找不到任何有用的东西......
样本数据:
`Person #`<-c(199,148,148,145,177,165,144,121,188,188,188,111)
`Phone #1`<-c(6532881717,6572231223,6541132112,6457886543,6548887777,7372222222,6451123425,6783450101,7890986543,6785554444,8764443344,6453348736)
`Phone #2`<-c(NA,NA,NA,NA,NA,7372222222,NA,NA,NA,6785554444,NA,NA)
Animals<-c("Cat","Dog","Elephant","Giraffe","Bird","Snake","Skunk","Raccoon","Moose","Turtle","Beaver","Porcupine")
Df1<-data.frame(`Person #`,`Phone #1`,`Phone #2`, Animals)
`Person ID #`<-c(199,148,142,145,177,165,144,121,182,109,188,111)
`Phone s 1`<-c(6532881717,6572231223,6541132112,6457886543,6548887777,7372222222,6451123425,6783450101,7890986543,6785554400,8764443344,6453348736)
`Phone s 2`<-c(NA,NA,NA,NA,NA,7372222222,NA,NA,NA,6785554444,NA,NA)
Animals<-c("Cat","Dog","Elephant","Giraffe","Bird","Snake","Skunk","Raccoon","Moose","Turtle","Beaver","Porcupine")
Df2<-data.frame(`Person ID #`,`Phone s 1`,`Phone s 2`, Animals)
【问题讨论】:
-
不需要另一个参数吗?
rename_at(.tbl, .vars, .funs = list(), ...)。或者你错过了一个近亲?