我想在一个数据帧中创建几个新的空变量,并在向量中指定变量名。如果我只指定了一个变量名,这是可行的,但如果指定了几个,就不行了。我尝试了一些以前的解决方案,但它们似乎在这种情况下不起作用,例如:
library(dplyr)
add_columns <- function(df, columns){
columns <- quo(columns)
mutate(df, !!columns := NA_character_)
}
columns <- c("x", "y")
iris %>%
add_columns(columns)
Error: The LHS of `:=` must be a string or a symbol
期望的输出将是:
# A tibble: 150 x 7
Sepal.Length Sepal.Width Petal.Length Petal.Width Species x y
<dbl> <dbl> <dbl> <dbl> <fct> <chr> <chr>
1 5.10 3.50 1.40 0.200 setosa NA NA
2 4.90 3.00 1.40 0.200 setosa NA NA
3 4.70 3.20 1.30 0.200 setosa NA NA
4 4.60 3.10 1.50 0.200 setosa NA NA
5 5.00 3.60 1.40 0.200 setosa NA NA
6 5.40 3.90 1.70 0.400 setosa NA NA
7 4.60 3.40 1.40 0.300 setosa NA NA
8 5.00 3.40 1.50 0.200 setosa NA NA
9 4.40 2.90 1.40 0.200 setosa NA NA
10 4.90 3.10 1.50 0.100 setosa NA NA
# ... with 140 more rows
我想知道我如何能使这个工作?
这里你不需要任何引号,因为你不是在处理带引号的表达式。只需创建具有适当名称的矢量并将它们拼接在一起。这里我使用了长度为1的向量被回收的事实,但是你也可以创建完整长度的向量:
add_columns <- function(df, columns){
new <- rep(NA_character_, length(columns))
names(new) <- columns
mutate(df, !!!new)
}
我想在使用dplyr时动态创建变量名;不过,我也可以使用非DPLYR解决方案。 例如:
我想从数据帧中提取一个变量名,并用dplyr::mutate创建一个新变量。我必须写什么才能接受通过“md$meta[1]”提供的变量名?我想这是直截了当的,但我还没能在网上找到答案。如有任何帮助,不胜感激!
我想使用<code>dplyr::mutate()</code>在数据帧中创建多个新列。应动态生成列名及其内容。 来自iris的示例数据: 我创建了一个函数,可以从<code>Petal中修改我的新列。宽度变量: 现在我创建一个循环来构建我的列: 然而,由于mutate认为varname是一个文字变量名,因此循环只创建一个新变量(称为varname),而不是四个(称为petal.2-petal.5
我正在做一个分配,对于其中一个方法,我希望每次调用该方法时都创建一个新的arraylist。 下面是我的方法 } 当我试图创建一个与java.lang.String id变量同名的ArrayList时,我得到了一个错误。但是,每次调用此方法时,我都希望创建一个ArrayList,该ArrayList的名称是id唯一的,以便以后可以使用它。例如,如果id是“Steve”,我可以将arrayList称
问题内容: 如何使用列表中的名称创建新变量?这个: 当然不行。我该怎么办? 我想做这个: 问题答案: 我认为更适合此目的: 但是,如果您仍然想即时创建变量,则可以使用:
下面是我的可复制代码: 另外,我知道.dots可以接收矢量中的名称(我想),但我不太理解如何在mutate()中与case_when一起使用。 也欢迎使用recoded值创建新列的其他方法 更新:我的预期输出将是包含26个新列的原始数据帧,p1_cod:p26_cod,可能包含值1(如果正确)和0(如果不正确)。 类似这样的内容(我刚刚创建了4个列,其中有1和0作为示例)。