В R, как мне изменить столбец dataframe в списке с именем строки - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в R. Спасибо за ваше терпение. Я работаю с пакетом опроса.

Справочная информация : я пишу функцию, которая перебирает комбинации предикторов и переменных результата (т. Е. svyglm(outcome~predictor)) в сложном опросе, чтобы Выход сырой распространенности крыс ios. Для каждой комбинации «результат / предиктор» я хочу сначала переименовать предиктор в объекте дизайна опроса, чтобы убедиться, что выходные крысы ios все>> 1.

Specifi c проблема : Учитывая, как имя объекта дизайна опроса, имя столбца и опорный уровень в виде строк, как я могу сказать, что RI хочет, чтобы указанный столбец был освобожден.

prams16 - это название объекта дизайна опроса, который включает в себя список из 9 элементов, переменные - это аналитический набор данных c (фрейм данных) в объекте дизайна опроса, а mrace - столбец в переменных DF.

Эти работы:

prams16$variables$mrace <- relevel(prams16$variables$mrace, ref="White")
prams16[["variables"]]["mrace"] <- relevel(prams16$variables$mrace, ref="White")

Однако, когда я пытаюсь создать ссылки на prams16$variables$mrace или prams16[["variables"]]["mrace"] со строками, кажется, ничего не работает.

Спасибо!

РЕДАКТИРОВАТЬ: запрошенный воспроизводимый пример проблемы.

myPredictor <- as.factor(c("Red","White","Black","Red","Green","Black","White","Black","Red","Green","Black"))
myOutcome <- c(1,0,1,0,1,0,1,0,1,0,1)
myDF <- tibble(myPredictor, myOutcome)
myOtherStuff <- c("etc","etc")
myObj <- list(myDF=myDF,myOtherStuff=myOtherStuff)


#These work...
myObj$myDF$myPredictor <- relevel(myObj$myDF$myPredictor, ref="White")
str(myObj$myDF$myPredictor) #"White" is now the referent level

myObj[["myDF"]]["myPredictor"] <- relevel(myObj$myDF$myPredictor, ref="Red")
str(myObj$myDF$myPredictor) #"Red" is now the referent level

#How to construct relevel assignment statement from strings?
anObj <- "myObj"
aPredictor <- "myPredictor"
aRef <- "Green"

#Produces error
as.name(paste0(anObj,"$myDF$",aPredictor)) <- relevel(as.name(paste0(anObj,"$myDF$",aPredictor)), ref=aRef)
...