Когда я запускаю этот код в командной строке R, он отлично работает; У меня есть 1 наблюдение за 5 переменными в df_frame
.rbind не работает должным образом в циклах
st <- "AK"
df_frame <- data.frame(hospital=factor(),
state=factor(),rank=numeric(),ties=numeric(),
outcome=numeric())
temp <- data.frame(list(hospital="<NA>",
state=st,rank=0,ties=0,outcome=0))
df_frame <- rbind(df_frame,temp)
Когда я использую один и тот же код в цикле, где I цикла над списком состояний:
for (st in states) {
if (st %in% ranked_states) {
states_lst <- which(hosp_state == st)
df_frame <- rbind(df_frame, df_outcome[states_lst,])
# Handle ties here
} else {
#df_frame[nrow(df_frame)+1,] <- c("<NA>",state,0,0,0)
#df_frame <- rbind(df_frame,
# c(as.character("<NA>"),as.character(state),0,0,0))
temp <- data.frame(list(hospital="<NA>",
state=st,rank=0,ties=0,outcome=0))
df_frame <- rbind(df_frame,temp)
}
}
У меня есть эти предупреждения:
1: In `[<-.factor`(`*tmp*`, ri, value = "<NA>") :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "AK") :
invalid factor level, NA generated
Независимо от того, магическое сочетание factor
и stringsAsFactors=FALSE
, это не работает.
маленький * воспроизводимым * пример поможет ... –
параметр 'option (strAsAsFactors = FALSE)' будет проще всего. вы не можете просто комбинировать факторные переменные с разными уровнями. это будет похоже на обязательный «секс» и «состояние» - r предупреждает вас, что они несовместимы. – rawr
@hfty Вот пример цикла ' df_frame <-data.frame (hospital = factor(), state = фактор()) для (ст в штатах) { если (ст% в% ranked_states) { # это работает отлично \t \t states_lst <- какой (hosp_state == е) df_frame <- rbind (df_frame , \t df_outcome [states_lst,]) else { \t \t # это заменить и ул Н.А. при использовании в цикле \t \t # на подсказке, она отлично работает Темп <- data.frame (список (больница = «», состояние = й, ранг = 0, галстуков = 0, result = 0)) df_frame <- rbind (df_frame, temp) } } ' –
physnoct