我有以下
Authorization: Basic
SVpzSWk2SERiQjVlOFZLZFpBblVpX2ZaM2Y4YTpHbTBiSjZvV1Y4ZkM1T1FMTGxDNmpzbEFDVzhh
其中每个列表元素作为数据框。
正如您所看到的,这仅适用于第三个元素,但我希望它能够处理所有元素。
我怎样才能避免这样做:
T<-as.data.frame(lapply(tables[3][[1]], function(y) gsub("\\s+", " ", y)),stringsAsFactors = FALSE)
而不必诉诸于笨重的循环?
由于
供参考(其他元素类似)
as.data.frame(lapply(tables[1][[1]], function(y) gsub("\\s+", " ", y)),stringsAsFactors = FALSE)
as.data.frame(lapply(tables[2][[1]], function(y) gsub("\\s+", " ", y)),stringsAsFactors = FALSE)
as.data.frame(lapply(tables[3][[1]], function(y) gsub("\\s+", " ", y)),stringsAsFactors = FALSE)
答案 0 :(得分:2)
尝试使用以下内容重现您的数据。
tables <- list()
tables[[1]] <- data.frame(V1=c("01D", "01Z", "02A"), V2=c("Soft tissue \r\n inflammation ",
"Wound, other or \r\n unspecified ",
" Head \r\n Injury "))
tables[[2]] <- data.frame(V1=c("01D", "01Z", "02A"), V2=c("Soft tissue \r\n inflammation ",
"Wound, other or \r\n unspecified ",
" Head \r\n Injury "))
我可以管理以下
lapply(tables,function(x) as.data.frame(apply(x,2,function(y) gsub("\\s+", " ", y))))
内部应用函数将数据框强制转换为矩阵,因此您需要将其强制转换回外部lapply函数。
输出
[[1]]
V1 V2
1 01D Soft tissue inflammation
2 01Z Wound, other or unspecified
3 02A Head Injury
[[2]]
V1 V2
1 01D Soft tissue inflammation
2 01Z Wound, other or unspecified
3 02A Head Injury
答案 1 :(得分:1)
您可以嵌套lapply以获取嵌套列表。但实际上你也可以在评论中使用HubertL提到的for循环,这可能更清楚地阅读。 嵌套的lapply看起来像这样,其中1:length(tables)只给出表的索引。
T<-lapply(1:length(tables), function(x){
as.data.frame(lapply(tables[x][[1]], function(y){
gsub("\\s+", " ", y)),stringsAsFactors = FALSE})
}
)
这不是一种非常复杂的方法,但它应该可以正常工作。