2016-05-16 37 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)用data.age列替換原始列[3]

回答

1

您需要返回列表回到你的函數,因此修改功能:

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

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

應該做的伎倆。

+0

謝謝你對我的真實數據也有效。 – mattbawn