我在列表中有數字data.frame對象,並且想要並行添加它們。不過,我觀察到,在網格中添加配對的data.frame對象是重複的,我只能遍歷網格的上/下三角並對它們進行平行求和。我爲此編寫了簡單的R函數,但是由於重複求和,我的輸出位效率較低。我敢打賭,做這份工作必須有更直觀/更高效的方式。有沒有人有更好的解決方案,當data.frame對象在網格中時更容易/有效地做到這一點?任何建議,以更好地制定我的這項任務的功能?感謝如何高效地迭代網格中的data.frame對象?
模擬數據
fo <- data.frame(start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
ba <- data.frame(start=seq(5, by=2, len=7), stop=seq(7, by=2, len=7))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
mylist <- list(fo, ba, bleh)
我的自定義功能
add_pairDF <- function(set, idx=1L) {
quer <- set[[idx]]
.quer <- mapply('+', quer, quer)
supp <- lapply(set[-idx], function(ele_) {
ans <- mapply('+', quer, ele_)
})
res <- c(list(.quer), supp)
return(res)
}
初始輸出(重複存在):
ans_1 <- add_pairDF(set=mylist, idx=1L)
ans_2 <- add_pairDF(set=mylist, idx=2L)
ans_3 <- add_pairDF(set=mylist, idx=3L)
期望的輸出:
以我的初始輸出, FUNC重刑確實總結配對data.frame對象,但我認爲我不需要三次用mylist的不同索引打我的函數。
我想刪除配對的data.frame上的重複求和,如果所有配對的data.frame對象都放置在網格中,我們的目標是走在下/上三角形(包括對角線)上。我怎樣才能避免這種重複?網格中data.frame對象的有效迭代是什麼?任何人都可以提出可能的想法來解決我的問題嗎?
按原樣運行代碼會產生警告,因爲數據幀的長度不同。你能發佈你期望的實際數字輸出並解釋這個計算的目的嗎? –
您可以暫時忽略警告。如果像我在帖子中顯示的那樣運行我的自定義函數三次,它將以網格模式運行,因爲發生重複的總和,所以不希望這樣做。我正在尋求更有效的迭代,只能在網格的上/下三角形(包括對角線)上行走。有什麼更好的想法 – Jeff