2015-05-01 2 views
1

У меня есть отсортированный вектор числовых значений, и я хотел бы создать новый вектор, содержащий середины всех пар. Например:Создайте список средних точек отсортированного списка

a <- c(1,2,3,4) 

Я хочу создать b таким образом, что она содержит среднюю точку (1,2), (2,3) и (3,4):

b <- c(1.5, 2.5, 3.5) 
+5

'rowMeans (код вставки (а, 2))' или 'зоопарка :: rollmean (а, 2)' – Khashaa

+3

@Khashaa, 'embed' не высока там в списке общеизвестных функций R, так почему бы вам не опубликовать ответ вместо комментария. – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto Я сейчас далеко от своего компьютера. Можете ли вы опубликовать его в качестве ответа? – Khashaa

ответ

5

Как указано @Khashaa в комментариях, вы можете использовать rowMeans после использования embed или вы можете использовать rollmean из пакета «zoo».

Пример:

a <- 1:4 

rowMeans(embed(a, 2)) 
# [1] 1.5 2.5 3.5 

library(zoo) 
rollmean(a, 2) 
# [1] 1.5 2.5 3.5 

Если они слишком неясными, подобная концепция просто объединить две версии вектора, один с первым значением недостающего и один с последним значением отсутствует, а затем использовать rowMeans ,

Пример:

rowMeans(cbind(head(a, -1), tail(a, -1))) 
# [1] 1.5 2.5 3.5 
+0

большое спасибо! это была большая помощь! – shaida