如何在 mutate 函数的计算中使用变量?
How can I have use variables in the calculations of mutate function?
考虑这个著名的 table(已经存在于 R 中)
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
请注意它有一个名为 Sepal.Length 的列。
我定义了一个同名的变量。请考虑此代码:
table = iris
Sepal.Length = 0
table2 = table %>% mutate ( new = Sepal.Length*Petal.Length )
如果检查结果:
head(table2)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 0.28
2 4.9 3.0 1.4 0.2 setosa 0.28
3 4.7 3.2 1.3 0.2 setosa 0.26
4 4.6 3.1 1.5 0.2 setosa 0.30
5 5.0 3.6 1.4 0.2 setosa 0.28
6 5.4 3.9 1.7 0.4 setosa 0.68
如您所见,变量 Sepal.Length = 0 已被忽略,列 table$Sepal.Length 已被考虑用于创建新列。
如何在 mutate 函数的计算中使用变量?
如果我们想使用 Global env 中的对象,它也是数据中的列名,请使用 .env
library(dplyr)
table2 <- table %>%
mutate ( new = Petal.Width* .env$Sepal.Length )
或者,将 !!
放在 Sepal.Length
前面,如此处所述
包
library(dplyr)
解决方案
table <- iris #no need to change the name of the dataset. But ok.
Sepal.Length <- 0
table %>% mutate ( new = !!Sepal.Length*Petal.Length )
输出(头)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 0
2 4.9 3.0 1.4 0.2 setosa 0
3 4.7 3.2 1.3 0.2 setosa 0
4 4.6 3.1 1.5 0.2 setosa 0
5 5.0 3.6 1.4 0.2 setosa 0
6 5.4 3.9 1.7 0.4 setosa 0
考虑这个著名的 table(已经存在于 R 中)
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
请注意它有一个名为 Sepal.Length 的列。 我定义了一个同名的变量。请考虑此代码:
table = iris
Sepal.Length = 0
table2 = table %>% mutate ( new = Sepal.Length*Petal.Length )
如果检查结果:
head(table2)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 0.28
2 4.9 3.0 1.4 0.2 setosa 0.28
3 4.7 3.2 1.3 0.2 setosa 0.26
4 4.6 3.1 1.5 0.2 setosa 0.30
5 5.0 3.6 1.4 0.2 setosa 0.28
6 5.4 3.9 1.7 0.4 setosa 0.68
如您所见,变量 Sepal.Length = 0 已被忽略,列 table$Sepal.Length 已被考虑用于创建新列。
如何在 mutate 函数的计算中使用变量?
如果我们想使用 Global env 中的对象,它也是数据中的列名,请使用 .env
library(dplyr)
table2 <- table %>%
mutate ( new = Petal.Width* .env$Sepal.Length )
或者,将 !!
放在 Sepal.Length
前面,如此处所述
包
library(dplyr)
解决方案
table <- iris #no need to change the name of the dataset. But ok.
Sepal.Length <- 0
table %>% mutate ( new = !!Sepal.Length*Petal.Length )
输出(头)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 0
2 4.9 3.0 1.4 0.2 setosa 0
3 4.7 3.2 1.3 0.2 setosa 0
4 4.6 3.1 1.5 0.2 setosa 0
5 5.0 3.6 1.4 0.2 setosa 0
6 5.4 3.9 1.7 0.4 setosa 0