0
我不認爲這是一個難題,但我根本無法弄清楚,也無法找到堆棧上的任何東西(希望我' m不重複)。我試圖用if/else將我的嵌套循環變成lapply語句。我有一個數據框的列表,但還沒有想出如何在嵌套for循環中訪問行。我正在使用bearingDelta列來根據軸承列值大於或小於119.9來填充1或0的新列表。此外,我意識到這個問題可能看起來與我最近發佈的問題類似,但我認爲它不同於生活。if/else語句使用lapply遍歷R中的數據框列表中的行
數據:
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
+1 - 也'lapply(df.list,用, as.integer(bearingDelta> = 119.9))' – flodel
@ flodel我還沒有用過'with' - 會很有用,謝謝 – alexwhan
很好用,非常感謝! – Misc