r - 如何运行一个 for 循环子集多个列表,所有这些列表都包含数据帧
问题描述
我有 5 个名为“夜总会”、“医院”、“酒吧”、“景点”、“social_facility”的列表,所有这些列表都包含一个名为 osm_points 的数据框。我想创建一个包含 5 个数据帧的新列表,其中原始数据帧的名称仅包含 3 个向量“osm_id”、“name”、“addr.postcode”,向量“addr.postcode”没有 NA 值。下面是我尝试的代码,我不知道没有 $ (这给我一个错误的原子向量)或没有方括号的列表子集的另一种方法。让知道你们是否有一些建议。
vectors <- c("osm_id","name","addr.postcode")
features <- c("nightclub", "hospital", "bar", "attraction", "social_facility")
datasets <- list()
n <- 0
for (i in features){
n <- n + 1
datasets[[n]] <- paste(i)[["osm_points"]][!is.na(paste(i)[["osm_points"]][["addr.postcode"]]), variables]
}
我设法在没有 for 循环的情况下执行此操作(如下),但我希望能够更好地编码并在一个操作中完成所有操作。非常感谢你的帮助。
nightclub1 <- nightclub$osm_points[!is.na(nightclub$osm_points$addr.postcode), variables]
谢谢 !!
解决方案
尝试使用此代码lapply
:
result <- lapply(mget(features), function(x)
x$osm_points[!is.na(x$osm_points$addr.postcode), vectors])
result
应该有 5 个数据框的列表,每个数据框features
只有vectors
一列,没有NA
.addr.postcode