我不认为这是一个很难的问题,但我根本无法弄清楚这一点并且在堆栈上找不到任何东西(希望我没有重复)。我正在尝试使用 if/else 将嵌套的 for 循环更改为 lapply 语句。我有一个数据框列表,但还没有弄清楚如何像在嵌套的 for 循环中那样访问行。我正在使用bearingDelta 列来填充一个新列表,其中的值是1 或0,具体取决于bearingDelta 列的值是大于还是小于119.9。另外,我意识到这个问题可能与我最近发布的一个问题相似,但我认为它已经足够不同了。
数据:
lat <- c(32.87707, 32.87708, 32.87694, 32.87726, 32.87469)
lon <- c(-117.2386, -117.2334, -117.2378, -117.2356, -117.2329)
bearingDelta <- c(180, 49, 23, 119, 129)
df <- data.frame(cbind(bearingDelta, lat, lon))
df.list <- list(df, df, df, df)
嵌套循环:
over120 <- list()
for (i in 1:length(tripList)) {
for (j in 1:nrow(tripList[[i]])) {
if (tripList[[i]][j, c("bearingDelta")] <= 119.9) {
over120[[i]][j] <- 0 }
else {
over120[[i]][j] <- 1 }
}
}
lapply (这就是我想要达到的目的)。
over120 <- lapply(tripList, if (tripList[[i]][j, c("bearingDelta")] <= 119.9) over120[[i]][j] <- 0
else over120[[i]][j] <- 1)
此示例数据集的所需输出如下所示:
> over120
[[1]]
[1] 1 0 0 0 1
[[2]]
[1] 1 0 0 0 1
[[3]]
[1] 1 0 0 0 1
[[4]]
[1] 1 0 0 0 1