dplyr的重命名函数要求新列名作为未引用的变量名传递。然而,我有一个函数,其中列名是通过将字符串粘贴到传入的参数上构建的,因此是字符字符串。
例如,假设我有这个函数
myFunc <- function(df, col){
new <- paste0(col, '_1')
out <- dplyr::rename(df, new = old)
return(out)
}
如果我运行这个
df <- data.frame(a = 1:3, old = 4:6)
myFunc(df, 'x')
我明白了。
a new
1 1 4
2 2 5
3 3 6
尽管我希望“新”列是我构建的字符串的名称(即'x_1')。
a x_1
1 1 4
2 2 5
3 3 6
有没有任何方法可以做到这一点?
dplyr 0.3
的公告:“您现在可以使用dplyr
进行编程 - 每个使用非标准评估(NSE)的函数都有一个以_
结尾的标准评估(SE)副本[...]每个函数的SE版本具有类似的参数,但必须明确“引用”。" 因此,检查是否在这里可以使用rename_
。 - Henrikcolnames(df)[colnames(df) %in% "old"] <- paste0("x","_")
(如果需要可以放进一个函数中),因为它可以轻松替换名称向量。 - akrundf
<%>%>%
names(.) <- rename_(new)` - mtelesha