我想操縱兩列矩陣中的列數據並將其輸出爲data.frame。R優化雙循環,矩陣操作
我擁有的矩陣是這種格式,其中開始和結束列中的值都在增加並且不重疊。此外,總是有更多的開始條目比有結束條目。
假設我開始與這個矩陣:
# Start End
# [1,] 1 6
# [2,] 2 9
# [3,] 3 15
# [4,] 7 NA
# [5,] 8 NA
# [6,] 11 NA
# [7,] 12 NA
# [8,] 14 NA
我想這雙for循環輸出組織了所有的初始值小於終值和同夥它與最終價值data.frame。
爲了澄清我想這個輸出:
# Start End
# 1 1,2,3 6
# 2 7,8 9
# 3 11,12,14 15
我嘗試了雙for循環,但我需要的東西更快,因爲我想用這種方法在更大的矩陣〜5 MB。
start_end <- matrix(c(1, 6, 2, 9, 3, 15, 7, NA, 8, NA, 11, NA, 12, NA, 14, NA),
nrow=8,
ncol=2)
# of non NA rows in column 2
non_nacol <- sum(is.na(start_end[,2]))
sorted.output <- data.frame(matrix(NA, nrow = nrow(start_end), ncol = 0))
sorted.output$start <- 0
sorted.output$end <- 0
#Sort and populate data frame
for (k in 1:non_nacol) {
for (j in 1:nrow(start_end)) {
if (start_end[j,1]<start_end[k,2]) {
S <- (start_end[j,1])
E <- (start_end[k,2])
sorted.output$start[j] <- S
sorted.output$end[j] <- E
}
}
}
感謝您的幫助!
這很快就會奏效謝謝羅蘭 – ALKI