#r #dataframe #dplyr
#r #фрейм данных #dplyr
Вопрос:
library(dplyr)
func <- function(data, col){
data <- data %>%
mutate(col = {{col}}*2)
return(data)
}
df <- data.frame(x = c(1:8), y = c("hello", "world", "sun", "winter"))
func(df, x)
x y col
1 1 hello 2
2 2 world 4
3 3 sun 6
4 4 winter 8
5 5 hello 10
6 6 world 12
7 7 sun 14
8 8 winter 16
Я хочу, чтобы столбец x был обновлен:
x y
1 2 hello
2 4 world
3 6 sun
4 8 winter
5 10 hello
6 12 world
7 14 sun
8 16 winter
Я безуспешно пробовал несколько вещей, у кого-нибудь есть какие-либо предложения? Заранее спасибо!
Ответ №1:
Нам нужен оператор присваивания ( :=
)
func <- function(data, col){
data %>%
mutate({{col}} := {{col}}*2)
}
func(df, x)
-вывод
# x y
#1 2 hello
#2 4 world
#3 6 sun
#4 8 winter
#5 10 hello
#6 12 world
#7 14 sun
#8 16 winter
Ответ №2:
Это должно сделать это.
library(dplyr)
df <- data.frame(x = c(1:8), y = c("hello", "world", "sun", "winter"))
func(df, x)
func <- function(data, x){
data <- data %>%
mutate(x = {{x}}*2)
return(data)
}
Комментарии:
1. это работает, потому что переменная в функции () имеет то же имя, что и в df ‘x’
Ответ №3:
Я не знал об этих двойных фигурных скобках. Я немного покопался. Оказывается, вам нужно поместить фигурную фигуру вокруг изменяемого столбца. В противном случае он создаст новый столбец.
library(dplyr)
func <- function(data, col){
data <- data %>%
mutate({{col}} = {{col}}*2)
return(data)
}
df <- data.frame(x = c(1:8), y = c("hello", "world", "sun", "winter"))
func(df, x)
output:
x y
1 2 hello
2 4 world
3 6 sun
4 8 winter
5 10 hello
6 12 world
7 14 sun
8 16 winter