2017-09-12 132 views
1

我有2個輸入矢量,如下所示。我需要匹配範圍,並需要將它們存儲在單獨的向量中。它的工作原理如下:iv1的前兩個值之間的值存儲在ov1中,iv2中的值存儲在iv2的第二個值和第三個值之間,依此類推。注意:輸入矢量中的值已經以升序排列。請任何想法?將一個矢量設置爲另一個矢量

輸入:

iv1 <- c(100, 200, 300, 400, 435) 

iv2 <- c(60, 120, 140, 160, 180, 230, 250, 255, 265, 270, 295, 340, 355, 401, 422, 424, 430) 

輸出:

ov1: 120, 140, 160, 180 

ov2: 230, 250, 255, 265, 270, 295 

ov3: 340, 355 

ov4: 401, 422, 424, 430 
+2

'split(iv2,cut(iv2,breaks = iv1))' –

回答

1

作爲@RonakShah建議的,在這種情況下,最有效的方法可以是這樣的:

split(iv2, cut(iv2, breaks = iv1,labels = paste0('ov',1:4))) 

輸出:

$ov1 
[1] 120 140 160 180 

$ov2 
[1] 230 250 255 265 270 295 

$ov3 
[1] 340 355 

$ov4 
[1] 401 422 424 430 
+0

完美!輸出看起來不錯。但我猜每個ov的值都不是以數組的形式存儲的。我嘗試查看ov1,並得到「錯誤:找不到對象'ov1'」。有什麼建議嗎? –

+0

@ user8556385 - 很高興幫助。是的,這些值存儲在列表中,而不是數組。因此,如果我們將上述內容存儲爲「x」(即x <-split ...),那麼我們可以按名稱(例如ov1)訪問各個列表元素,如下所示:x [['ov1']] – www

+0

明白了。謝謝! –

相關問題