2015-10-25 27 views
0

當我在R提示符下運行此代碼時,它工作正常;我在df_frame中有1個觀察5個變量。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) 

當我在一個循環中,在國家的名單,我循環使用相同的代碼:

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 

無論神奇組合factorstringsAsFactors=FALSE,它不起作用。

+0

小*重複性*例子會有所幫助... –

+0

設置'option(stringsAsFactors = FALSE)'會是最簡單的。你不能只將因素變量與不同層次結合起來。這會像綁定'性別'和'狀態' - r警告你,他們不兼容 – rawr

+0

@hfty 這裏是一個循環的例子 ' df_frame <-data.frame(hospital = factor(),state =因子()) 爲(ST中的狀態) { 如果在%ranked_states(ST%) { #這工作正常 \t \t states_lst < - 其中(hosp_state == ST) df_frame < - rbind(df_frame ,\t df_outcome [states_lst,]) } else { \t \t#在循環中使用時,這種替代和ST NA通過 \t \t#上的提示,它工作正常 溫度< - data.frame(名單(醫院= 「」,狀態= ST,排名= 0,領帶= 0,結果= 0)) df_frame < - rbind(df_frame,temp) } } @ – physnoct

回答

0

我收到了同樣的錯誤。經過多次嘗試,我的問題是data.frame中的一個不僅是data.frame。

類(your_dataframe)

結果:"grouped_df" "tbl_df" "tbl" "data.frame"

我通過your_dataframe <- as.data.frame(your_dataframe)

PS解決:這是不是在Windows必要plataform僅在Ubuntu