2015-03-16 2 views
0

Попытка обновить столбец альфа-символов соответствующим буквенно-цифровым символам: значение «А» - «1».Обновить столбец dataframe в алфавитном положении письма

передавая это в консоли обновляет SDT dataframe для столбца 5

x <- 5 
y <- "K" 
z <- "1000" 
sdt[[x]] <- ifelse(sdt[[x]] == y, z, sdt[[x]]) 

думал, масштабировать его, построив эту функцию:

texp <- function (x, y, z) { 

    x <- as.integer(x) 
    y <- as.character(y) 
    y <- as.character(z) 
    sdt[[x]] <- ifelse(sdt[[x]] == y, z, sdt[[x]])   
} 

переходя затем на консоль:

texp(5, "A", "1") 

Обновлений не было. Попытка множества вариантов, никто не работал (это означает, что никаких обновлений не было сделано).

Что мне не хватает?

+0

Ваша функция ничего не возвращает. Добавьте 'sdt' перед закрытием} и посмотрите, работает ли он –

ответ

2
# Update column 
sdt[[5]] <- match(tolower(sdt[[5]]), letters) 

# transform to numeric 
sdt[[5]] <- as.numeric(sdt[[5]]) 

Заметки о коде:

  1. Внутри функции, если вы хотите изменить существующий объект, то нужно использовать <<- вместо <- (хотя это должно быть использовано с осторожностью) ,
  2. Как указывал docendo, вы обычно хотите, чтобы функция возвращала что-то вместо изменения существующих объектов. Так, например, у вас может быть return(ifelse([your args])), а затем используйте вашу функцию для , присваивая новые значения.
Смежные вопросы