2016-05-16 2 views
0

у меня есть большой набор данных хранится в виде списка списков, которые могут быть упрощены таким образом:R использовать Grep, чтобы очистить колонку в списке списков

list1 <- list(1,"bob", "age=14;years") 
list2 <- list(2,"bill", "age=24;years") 
list3 <- list(3,"bert", "age=36;years") 

data.list <- list(list1, list2, list3) 

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

clean <- function(x){ 
    x <- as.numeric(gsub('.*age=(.*?);.*','\\1', x[3])) 
} 

data.age <- lapply(data.list, clean) 

Но как может я либо

а) непосредственно очистить колонку, чтобы вернуть значение

или

b) заменить исходный столбец [3] колонкой data.age?

ответ

1

Вы должны вернуть список обратно в функцию, так измените функцию:

clean <- function(x){ 
    x[[3]] <- as.numeric(gsub('.*age=(.*?);.*','\\1', x[[3]])) 
    x 
} 

data.age <- lapply(data.list, clean) 

должен сделать трюк.

+0

Спасибо, что это сработало и над моими настоящими данными. – mattbawn