Я пытаюсь изменить данные в наборе данных на основе вектора столбцов для изменения. Таким образом, я мог бы факторизовать обработку на основе файла конфигурации, в котором список столбцов должен быть изменен как переменная.
В идеале я хотел бы иметь возможность использовать ddply следующим образом:
column <- "var2"
df <- ddply(df, .(), transform, column = func(column))
На выходе будет тот же кадр данных, но в столбце «B» за каждой буквой будет добавлена буква «A».
Что бы изменить каждый элемент столбца var2 на элемент через func (здесь func используется для обрезки chr определенным образом). Я пробовал несколько решений, например:
df[do.call(func, df[,column]), ]
который не принимает df[,column] в качестве аргумента (не список) или
param = c("var1", "var2")
for(p in param){
df <- df[func(df[,p]),]
}
который уничтожает другие данные, или
df[, column] <- lapply(df[, column], func)
Это не работает, потому что в качестве аргумента используется весь столбец, а не изменение каждого элемента 1 на 1. У меня нет идей о том, как сделать эту обработку более автоматической.
Пример :
df <- data.frame(A=1:10, B=letters[2:11])
colname <- "B"
addA <- function(text) { paste0(text, "A") }
И я хотел бы сделать что-то вроде этого:
df <- ddply(df, .(), transform, colname = addA(colname))
Хотя, если решение не использует ddply, это не проблема, просто я больше всего к этому привык.
df[,column] <- do.call(func, list(df[,column]))
нужный вам результат? - person Matt Jewett   schedule 05.07.2017