Я предполагаю, что мне не хватает чего-то довольно простого здесь, или я полностью лаю по неправильному дереву, однако я пытался разобраться в этом в течение нескольких дней, и мой новичок R не смогли его взломать.Ссылка на значение массива из функции в R
Я ищу способ ссылки на массив значений из функции R. Я создаю моделируемое население, у меня есть возраст, пол и этническая принадлежность, и я хочу имитировать наличие диабета. У меня распространенность диабета по возрастным группам, полу и этнической принадлежности, которые я внес в 2 (пол) x11 (возрастная группа) x6 (этническая принадлежность). То, что я хочу сделать, это ссылка на правильную ячейку в массиве и ее использование с помощью runif, вызываемого для запуска теста bernoulli для каждого человека.
Код ниже текущей версии, однако я попытался несколько различных методов с разными результатами:
function(AB,sex,eth){
AB<-AB
sex<- sex
eth<-as.numeric(eth)
#make matrix reference
#make 'european' equal to 'other'
eth <- ifelse(eth==7,6,eth)
#change male from a 0 coding to a 2 for array lookup
sex <- ifelse(sex==1,1,2)
#remove seven from AB due to diab data starting at 30-34 age bracket
agebracket <- AB-7
#random number drawn
diabbase <- runif(census$Total.Sex[AB],0,1)
#census$total.sex gives the total number in each age bracket
#array assignment
arrayvalue <- Darray[agebracket,sex,eth]
diab <- ifelse((diabbase >= (Darray[agebracket,sex,eth])) ,1,0)
return(diab)
}
если я вызвать функцию из командной строки с «arrayvalue» вернулся, а не «Диаб» и отдельные значения, представленные вместо переменных (т.е. diabtest < - diabgen (10,1,1)), он возвращает правильное значение из массива, но если я отправлю переменные (т.е. diabtest < - diabgen (AB, sex, eth), он возвращает пустой пул.
Если я могу дать дополнительную информацию, которая может сделать то, что я говорю ab пожалуйста, дайте мне знать, я был бы более чем счастлив сделать это, кажется, это так просто, но он делает мою голову. Я открыт для любых предложений по другим/лучшим способам делать то же самое, любые намеки приветствуются.
Первый аргумент 'runif' - это количество образцов, которые вы хотите, вероятно, 1. –
Привет, Винсент, спасибо за это, но я хотел сделать случайную ничью на человека, поэтому я запустил runif через число людей в возрастной группе, а не только в одном цикле. Если бы я сделал одну случайную ничью и использовал ее для всех людей, и, например, это было очень мало, симуляция показала бы, что у каждого был диабет, спасибо за интерес. – Josh
Есть ли причина, по которой вы не хотите создавать данные, с возрастом, сексом и этнической принадлежностью в качестве факторов? –