无法将变量名称动态添加到R

时间:2016-12-02 18:07:10

标签: r tidyverse

我希望根据另一个数据框将一堆变量添加到现有数据框中。我正在使用这个question and answer来设置自己,但它实际上并没有做任何事情。

让我们说在下面的代码中我有一个名为comp的数据框,我希望通过迭代遍历iris中的每一列并将其命名为数据框comp空变量变量由“vs”列中的第一行变为该列中的第二行:

library(tidyverse)
comp <- as_tibble(combn(letters[1:4], 2))
mydf <- as_tibble(iris)

# Creating a function that creates a variable name for each column in comp
# and creates a variable with that name in df
varname_assign <- function(df, n){
varname <- paste0(comp[[1,n]], "Vs", comp[[2,n]])
mutate_(df, .dots= setNames(list(NA), varname))
return(df)
}

for (i in seq_along(comp)) {
mydf <- varname_assign(mydf, i)
}

mydf

# A tibble: 150 × 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
      <dbl>       <dbl>        <dbl>       <dbl>  <fctr>
1      5.1         3.5          1.4         0.2  setosa

#Nothing happened :(

我正试图得到这样的东西:

# A tibble: 150 × 11
Sepal.Length Sepal.Width Petal.Length Petal.Width Species  AvsB  AvsC  AvsD  BvsC  BvsD  CvsD
      <dbl>       <dbl>        <dbl>       <dbl>  <fctr>  <lgl> <lgl> <lgl> <lgl> <lgl> <lgl>
1      5.1         3.5          1.4         0.2  setosa    NA    NA    NA    NA    NA    NA
编辑:叹息。我刚刚意识到函数中的return(df)是罪魁祸首。如果我删除该行,则一切正常。但不确定这背后的逻辑是什么。

0 个答案:

没有答案