我想使用dplyr dplyr::mutate()在数据框中创建多个新列.应动态生成列名称及其内容.
来自虹膜的示例数据:
library(dplyr)
iris <- tbl_df(iris)
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个函数来改变Petal.Width变量中的新列:
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Run Code Online (Sandbox Code Playgroud)
现在我创建一个循环来构建我的列:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
Run Code Online (Sandbox Code Playgroud)
但是,由于mutate认为varname是一个文字变量名,因此循环只创建一个新变量(称为varname)而不是四个(称为petal.2 - petal.5).
如何将mutate()动态名称用作变量名?
mydf = data.frame(a = c(1,2,3,4), b = c(5,6,7,8), c = c(3,4,5,6))
var1 = 'a'
var2 = 'b'
mydf = mydf %>% mutate(newCol = var1 + var2)
Run Code Online (Sandbox Code Playgroud)
在我们的代码中,var1和var2可以引用 中的不同列mydf,并且我们需要通过对名称保存在和newCol中的列中的值进行求和来创建。我知道这可以在 之外完成,但是我想知道是否有一个像上面那样使用 dplyr 和 %>% 的解决方案。var1var2dplyr