使用R中的循环在变量中进行子集

时间:2013-07-22 16:02:16

标签: r

我对R来说相对较新,并会非常感激任何帮助。

我将调查数据(项目称为j01:j10)分组到地理区域(VISN),每个区域内都有站点(StaNo)。目标是将每个站点与除特定站点之外的VISN的平均值进行比较,并对每个项目进行比较。这是一个小例子集:

> visn<-c(1,1,1,2,2,2)
> station<-c(101, 102, 103, 201, 202, 203)
> j01<-c(2,3,4,2,3,4)
> j02<-c(3,2,5,4,2,3)
> data<-cbind(visn, station, j01, j02)

我已经编写了2个函数(cliffs.d和sig),我需要将子集化数据传递给它们。我有这些子集硬编码(11,000多行代码),我不知道如何使用索引或循环来压缩。

这是我所拥有的一个例子,用于1比较(站点101与VISN 1除了站点101,对于项目j01):

>visn<-subset(data, VISN==1 & StaNo!="101", select=j01)
>station<-subset(data, StaNo=="101", select=j01)>
>a<-c(cliffs.d(station, visn))
>p<-c(sig(station, visn))

这就是我所需要的(我只知道如何用非矢量化语言表达):

for each item in c(j01:j10)
  for each station in station
     visn<-subset(data, visn==visn[i] & station!=stano[i], select=item[i]
     station<-subset(data, station==station[i], select=item[i]
     a<-c(a, cliffs.d(station, visn))
     p<-c(p, sig(station, visn))

我已经花了好几天时间,我会非常感谢任何帮助或推动正确的方向。

0 个答案:

没有答案