df <- structure(list(Cars = structure(3:1, .Label = c("Ford ", "Mazda", "Merc"), class = "factor"), Model = structure(c(2L, 1L, 3L), .Label = c("c", "e-class", "gt"), class = "factor"), Color = structure(1:3, .Label = c("Black ", "Blue", "Red"), class = "factor")), class = "data.frame", row.names = c(NA, -3L))
argument <- structure(list(NewVar = structure(3:2, .Label = c("", "SKU", "Vehicle"), class = "factor"), Input = structure(2:3, .Label = c("", "Cars", "Model"), class = "factor")), row.names = 1:2, class = "data.frame")
after <- structure(list(Cars = structure(3:1, .Label = c("Ford ", "Mazda", "Merc"), class = "factor"), Model = structure(c(2L, 1L, 3L), .Label = c("c", "e-class", "gt"), class = "factor"), Color = structure(1:3, .Label = c("Black ", "Blue", "Red"), class = "factor"), Vehicle = structure(3:1, .Label = c("Ford ", "Mazda", "Merc"), class = "factor"), SKU = structure(c(2L, 1L, 3L), .Label = c("c", "e-class", "gt"), class = "factor")), class = "data.frame", row.names = c(NA, -3L))
df
#> Cars Model Color
#> 1 Merc e-class Black
#> 2 Mazda c Blue
#> 3 Ford gt Red
argument
#> NewVar Input
#> 1 Vehicle Cars
#> 2 SKU Model
after
#> Cars Model Color Vehicle SKU
#> 1 Merc e-class Black Merc e-class
#> 2 Mazda c Blue Mazda c
#> 3 Ford gt Red Ford gt
Я пытаюсь выполнить цикл по столбцам и создать копию на основе аргумента data.frame
. Это то, что я пытался, но на самом деле это не работает. У меня есть df
, аргумент и после dputs
. По сути, аргумент имеет столбец с заголовком «new var» и «input».
В качестве аргумента у меня есть «Автомобиль» в «новом var» и «вход» в «Авто».
Это означает, что в оригинале df
скопируйте «Автомобили» и назовите его «Транспортное средство».
List
является динамическим, поэтому я пытаюсь сохранить его для циклов, основанных на длине аргументов, то есть меняющихся, если я также хочу, чтобы цвет копировался как краска.
for (i in 1:length(argument$Input) ){
df %>%
mutate( paste0(argument[i,1]) = !!as.name(argument[i,2])
}
Обратите внимание, argument[i,1]
относится к input
, поэтому «переменная» - это имя нового столбца.
В dplyr
это влияет на df
, поэтому я подумал, что !!as.name
вытащит ту переменную, которая уже существует, т. Е. "Автомобили" уже находятся внутри до df
.