3
或者如何將矢量拆分爲連續成員對並將它們組合到列表中?創建一個列表,其中每個元素是來自給定矢量的一對連續成員
Supose您將得到矢量
map <-seq(from = 1, to = 20, by = 4)
這是
1 5 9 13 17
我的目標是創建以下列表
path <- list(c(1,5), c(5,9), c(9,13), c(13,17))
這應該代表了幾個路徑段該地圖正在逼迫我們遵循。爲了從1到17,我們首先要走第一條路(path[1]
),然後第二條路(path[2]
),並一路走到最後。
我第一次嘗試導致我:
path <- split(aux <- data.frame(S = map[-length(map)], E = map[-1]), row(aux))
但我認爲這是可能的,而無需創建這個附配的數據幀 ,避免性能下降時的初始向量(map
)是很大的。此外,它還會返回一個非常好的警告消息,但我想避免它們。
然後我發現這個在這裏計算器(不完全是這樣的,這是我的問題的改編版):
mod_map <- c(map, map[c(-1,-length(map))])
mod_map <- sort(mod_map)
split(mod_map, ceiling(seq_along(mod_map)/2))
這是一個簡單的解決方案,但我不得不使用這個修改後的版本我map
。
也許我問得太多了,因爲我已經有兩個解決方案。但是,是否有可能擁有第三個解決方案,以便我不像第一個解決方案那樣使用數據框,並且可以使用原始映射,這與我的第二個解決方案不同?
或者,可以通過'分裂避免'Map'(cbind(地圖[-length(地圖)],地圖[-1]),SEQ( lengt H(地圖)-1))' – Sotos