R使用grep清理列表列表中的列

时间:2016-05-16 15:49:38

标签: r lapply

我有一个大型数据集存储为可以简化的列表列表:

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)

我希望清理第三列,以便我只有age的数值。 这可以通过以下返回新列表的函数来完成:

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

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

但我怎么可能

a)直接清理列以返回值

b)将原始列[3]替换为data.age列?

1 个答案:

答案 0 :(得分:1)

您需要在功能中返回列表,因此请将您的功能修改为:

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

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

应该这样做。