簡體   English   中英

將值添加到 r dataframe

[英]add values to r dataframe

我想問我如何添加/追加新的觀察到空 r dataframe。 我將運行一個循環,我想在循環運行時更新這個 dataframe。

例如,我有這個 dataframe:

error <- data.frame(error_code = character(), row_no = character(), sleep_time = character(), time_scrape = character())

我將運行的循環是:

for (i in 1:10) {
  if (i %% 2 == 0) {
    error_code = i
    row_no = i
    sleep_time = 60
    time_scrape = i
   }
error <- error %>% 
add_row(error_code = error_code, row_no = row_no, sleep_time = sleep_time, time_scrape = time_scrape)
}

我想根據從循環中獲得的值添加值

我嘗試使用 add_row 但它不起作用。 我應該如何做到這一點,最后,我會得到這樣的東西:(p / s:下表是手動創建的,而不是上面的代碼)

error_code row_no sleep_time time_scrape
1          2      2         60          2
2          4      4         60          4

您可以在一個 go 中定義 data.frame:

i = as.character(seq(2,10,by=2))
data.frame(error_code = i,row_no = i,sleep_time = 60,time_scrape = i)

如果你絕對,真的,必須這樣做,這將是它的工作原理:

error <- data.frame(error_code = character(), row_no = character(), sleep_time = character(), time_scrape = character())

for (i in as.character(seq(2,10,by=2))){

error <- error %>%  
add_row(data.frame(error_code = i,
row_no = i,
sleep_time = as.character(60),
time_scrape = i,stringsAsFactors=FALSE))
}

這不是 go 的最佳方法。為什么當它們看起來像數字時你的所有列都是字符?

您可以使用rbind來解決這個問題,盡管這非常不理想。 來自其他答案的其他解決方案可能會讓我更方便。 但也許你需要循環結構。 所以在這里你 go:

 library(dplyr)

error <- data.frame(error_code = character(), row_no = character(), sleep_time = character(), time_scrape = character())


for (i in 1:10) {
  if (i %% 2 == 0) {
    error_code = i
    row_no = i
    sleep_time = 60
    time_scrape = i
    df<-data.frame(error_code, row_no, sleep_time, time_scrape)
    error <- rbind(error, df)
  }
  #error <- rbind(error, df)
}

我認為這應該讓你得到你想要的:

     e=c();r=c();s=c();t=c()
     
     for (i in 1:10){
     e[i] = 2*i
     r[i] = 2*i
     t[i] = 2*i
     df=data.frame(error_code=e,row_no=r,sleep_time=60,time_scrape=t)
     }
       }
       
       df

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM