我有一个大型数据集存储为可以简化的列表列表:
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
列?
答案 0 :(得分:1)
您需要在功能中返回列表,因此请将您的功能修改为:
clean <- function(x){
x[[3]] <- as.numeric(gsub('.*age=(.*?);.*','\\1', x[[3]]))
x
}
data.age <- lapply(data.list, clean)
应该这样做。