Здравствуйте. У меня возникли проблемы с поиском решения для программы, которую я писал, и я мог бы использовать некоторую поддержку.
Цель - создать новый параметр с именем Lambda для каждого человека в моем наборе данных. Лямбда является функцией 3 наблюдений, найденных в Df_obvs: Row, OAlpha, OSigma.
Row определяет data.frame, используемый для поиска Lambda, в то время как наблюдения OSigma и OAlpha идентифицируют строку и столбец, которые идентифицируют отдельный параметр Lambda. Существует 3 возможных варианта «Row»: 1, 2 и 3, поэтому есть 3 возможных фрейма данных: Row1, Row2 и Row3. В моей реальной задаче важно указать Row1 [1,1]! = Row2 [1,1], однако для этого примера вы заметите, что Row1 = Row2 = Row3.
#create observation matrix
Names<-c('Bob','Jane','Sue')
Row<-c(1,2,3)
OAlpha<-c(.05,.75,1.5)
OSigma<-c(.1,.9,1.4)
Df_obvs<-cbind.data.frame(Names,OAlpha,OSigma,Row)
Создание фреймов данных, используемых для определения параметров лямбда.
Switch<-data.frame(replicate(30,sample(0:8,30,rep=TRUE)))
alpha<-seq(.05,1.5,.05)
sigma<-seq(.05,1.5,.05)
colnames(Switch)<-alpha
rownames(Switch)<-sigma
Row1<-Switch
Row2<-Switch
Row3<-Switch
В этом моя проблема. Я хотел бы, чтобы программа проверила наблюдения отдельных лиц для строки, чтобы определить, какой фрейм данных (строка 1, строка 2 или строка 3) использовать для определения лямбды. Затем используйте наблюдения OSigma и OAlpha, чтобы найти точную ячейку в кадре данных и установить Lambda [j] равной этому.
final_lambda<- matrix(NA,3,1)
for (j in 1:length(Df_obvs[,1])){
if (Df_obvs$Row[j]==1) {Lambda[j]<-sapply(1:nrow(Df_obvs), function(i){Row1[Df_obvs$OSigma[i],Df_obvs$OAlpha[i]]})}
else if (Df_obvs$Row[j]==2) {Lambda[j]<-sapply(1:nrow(Df_obvs), function(i){Row2[Df_obvs$OSigma[i],Df_obvs$OAlpha[i]]})}
else {Lambda[j]<-sapply(1:nrow(Df_obvs), function(i){Row3[Df_obvs$OSigma[i],Df_obvs$OAlpha[i]]})}}
Я ценю ваше время и с нетерпением жду возможности увидеть, где я иду не так. Пожалуйста, дайте мне знать, если я должен что-то уточнить.