2017-01-21 3 views
0

У меня есть contr_factors фрейма данных, с 1932 строками и следующими столбцами: состояние, невооруженное, not_flee, white_victim, атаковано. Я хочу изменить факторы в наборе данных, и я писал этот код:R коэффициент изменения в наборе данных

contr_factors$unarmed <- as.factor(contr_factors$unarmed) 
levels(contr_factors$unarmed) <- c("Armed", "Unarmed") 
contr_factors$white_victim <- as.factor(contr_factors$white_victim) 
levels(contr_factors$white_victim) <- c("Non-white", "White") 
contr_factors$not_flee <- as.factor(contr_factors$not_flee) 
levels(contr_factors$not_flee) <- c("Flee", "Not flee") 
contr_factors$attacked <- as.factor(contr_factors$attacked) 
levels(contr_factors$attacked) <- c("Not attack", "attack")` 

Но я хочу, чтобы мой код сортировщик, и я попробовал эту функцию:

change_factors <- function(df, df_col, `name1`, `name2`) { 
as.factor(df$df_col) 
levels(df$df_col) <- c("name1", "name2") 
} 
change_factors(contr_factors, not_flee, `Flee`, `Not flee`) 

Но у меня есть ошибка: Ошибка в уровнях (df $ df_col) < - c ("name1", "name2"): попытка установить атрибут в NULL.

+0

Вы должны использовать 'df [[df_col]]' not 'df $ df_col', а затем вызывать функцию с' "not_flee" '(с кавычками). –

+0

Существует уже встроенная функция, которая делает то, что вы хотите. 'factor (contr_factors $ unarmed, levels = c (" Armed "," Unarmed ")'. Он также имеет аргумент 'label', который позволяет вам повторно маркировать уровни, если хотите. – konvas

ответ

0

Было бы хорошо, если бы вы предоставили некоторый пример кода. Это может сделать это проще, но у вас есть два варианта.

change_factors <- function(df, df_col, `name1`, `name2`) { 
     as.factor(df[,df_col]) 
     levels(df[,df_col] <- c("name1", "name2") 
     } 

change_factors(contr_factors, "not_flee", `Flee`, `Not flee`) 

Другой вариант - принять совет Рича. Проблема в том, что $ имеет проблемы с последующей записью строки. Вы можете рассмотреть использование пакета lazyeval, чтобы упростить его или использовать разные методы для доступа к столбцам в кадре данных.

Смежные вопросы