首页 文章

循环数据帧并将其传递给新的数据帧

提问于
浏览
0

我想创建一个空数据帧,然后执行循环并将新内容添加到(新)数据帧 .

因此我写了这样的东西:

number <- c(1,2)
text <- c("Yes", "No")
df_test <- data.frame(number, text)

df_base = data.frame(number = numeric(), text = character())

for(i in 1:nrow(df_test)){

 text <- df_test$text[i]
 number <- df_test$number[i]

 df_temp <- data.frame(text, number)
 df_base <- rbind(df_base, df_temp) 

}

上面的代码可以解决这个问题,但似乎并不是最有效的方法 . 关于如何更好地写这个的任何想法?

1 回答

  • 0

    如果您知道data.frame(df_base)的最终大小,则可以预先分配对象:

    df_base <- data.frame(text=character(nrow(df_test)),
                          number=numeric(nrow(dr_test)))
    

    然后,在循环中,填写以下列:

    for(i in 1:nrow(df_test)){
    
      text <- df_test$text[i]
      number <- df_test$number[i]
    
      df_base[i,"text"] <- text
      df_base[i,"number"] <- number
    
    }
    

    这将节省R在每个循环中制作df_base的多个副本 rbind .

相关问题