Я пытаюсь замаскировать переменные, запрошенные пользователем (what
) в data.frame на BASE R. Я написал функцию foo
для достижения этой цели для запрошенных числовых c переменных в data.frame. .
Но мне интересно, как маскировать символьные переменные (например, pid
в приведенном ниже примере)?
Для конкретности ниже приведены мои data.frame, моя функция foo
и желаемые выходы .
dat <- data.frame(sid = c(33,33,41,42,49,51), pid = c('Bob', 'Bob', 'Jim', 'John', 'Carol smith', 'Cathy'))
#== function `foo`:
foo <- function(data, what){
f <- function(data, what){
data[[what]] <- as.numeric(factor(data[[what]], levels = unique(data[[what]])))
return(data[what])
}
data[what] <- lapply(what, f, data = data)
return(data)
}
#== Example of use:
foo(dat, c('sid', 'pid'))
desired.output1 <- data.frame(sid = c(1,1,2, 3,4,5), pid = c('B', 'B', 'Ji', 'Jo', 'Car', 'Cat'))
desired.output2 <- data.frame(sid = c(1,1,2, 3,4,5), pid = c('B', 'B', 'J.1', 'J.2', 'C.1', 'C.2'))