2012-11-22 76 views
0

我平均存储在数据帧中的坐标如下:如何矢量化索引?

sapply(coords[N:M,],mean) # mean of coordinates N to M 

我需要几套坐标的平均值,所以使这个循环,它发现坐标1-4,5-11和的平均值20-30。

N <- c(1, 5,20) 
M <- c(4,11,30) 
for (i in 1:length(N)) { 
    sapply(coords[N(i):M(i),],mean) 
} 

我该如何矢量化该循环?我试图将一个矩阵传递给坐标(coords[NM,]),但这并不能给我我想要的。

+1

-1,因为这不是[重复性(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),因为你接受的答案发布问题后仅半小时[LINK](http://meta.stackexchange.com/a/5236) – GSee

+0

什么是不可重现的?在粘贴之前,我尝试了代码。我接受了答案,因为它解决了我的问题。如果我得到一个更好的,我总是改变接受的答案。 – Andreas

+1

我们没有'coords' – GSee

回答

2

为了简单和高效,您可以用colMeans(x)替换您的sapply(x, mean)

也许通过一个向量思考,如果可能和简单,你更愿意将几个变量(N和M)转换为单个向量 - 这里是数组。

N <- data.frame(from=c(1,5,20), to=c(4,11,30)) 
apply(N, 1, function(x) colMeans(coords[x[1]:x[2],]))