Это мой первый пост, и я очень застрял в попытке построить свою первую функцию, которая вычисляет показатели Херфиндаля для валового выпуска фирмы, используя панельные данные (год = 1998: 2007) с фирмами = наб. по годам (1998-2007) и регионам ("Запад", "Центр", "Восток", "СВ") и у меня проблемы с передачей аргументов через функцию. Я думаю, мне нужно использовать два цикла (один для времени и один для региона). Любая помощь будет полезна. Я действительно не хочу подмножать свои данные 400+ раз, чтобы получить измерения Херфиндаля по одному. Заранее спасибо!
Ниже я предоставляю: 1) Мой стартовый код (возвращает только одно значение); 2) желаемый результат (2 ячейки, содержащие меры Хефиндаля по 1) году и по 2) году-региону); и 3) исходные данные
1) Мой стартовый код
myherf<- function (x, time, region){
time = year # variable is defined in my data and includes c(1998:2007)
region = region # Variable is defined in my data, c("West", "Central","East","NE")
for (i in 1:length(time)) {
for (j in 1:length(region)) {
herf[i,j] <- x/sum(x)
herf[i,j] <- herf[i,j]^2
herf[i,j] <- sum(herf[i,j])^1/2
}
}
return(herf[i,j])
}
myherf(extractiveoutput$x, i, j)
Ошибка в herf[i, j] ‹- x/sum(x): объект 'herf' не найден
2) Мой желаемый результат - следующие два вектора:
A. (1x10 vector)
Year herfindahl(yr)
1998 x
1999 x
...
2007 x
B. (1x40 vector)
Year Region hefindahl(yr-region)
1998 West x
1998 Central x
1998 East x
1998 NE x
...
2007 West x
2007 Central x
2007 East x
2007 northeast x
3) Исходные данные
Obs. industry year region grossoutput
1 06 1998 Central 0.048804830
2 07 1998 Central 0.011222478
3 08 1998 Central 0.002851575
4 09 1998 Central 0.009515881
5 10 1998 Central 0.0067931
...
12 06 1999 Central 0.050861447
13 07 1999 Central 0.008421093
14 08 1999 Central 0.002034649
15 09 1999 Central 0.010651283
16 10 1999 Central 0.007766118
...
111 06 1998 East 0.036787413
112 07 1998 East 0.054958377
113 08 1998 East 0.007390260
114 09 1998 East 0.010766598
115 10 1998 East 0.015843418
...
436 31 2007 West 0.166044176
437 32 2007 West 0.400031011
438 33 2007 West 0.133472059
439 34 2007 West 0.043669662
440 45 2007 West 0.017904620
herf
? Я бы предложил подход data.table, но вы объясните, что такоеherf
- person mnel   schedule 05.10.2012herf <- matrix(nrow=length(time),ncol=length(region))
(и вы, вероятно, хотите вернуть всю матрицуherf
, а неherf[i,j]
) - person Ben Bolker   schedule 05.10.2012