【问题标题】:Adding rows to a dataframe using loop in R [closed]使用R中的循环将行添加到数据框[关闭]
【发布时间】:2021-05-17 02:27:00
【问题描述】:

我想使用循环向数据框添加额外的行。我有一个 API 端点列表,可以通过循环循环。循环的每次迭代都将提供单行数据。我无法超越如何获取额外的行(即 i = 2 是我的 df 的第 2 行等等),以便每次迭代都会向仪表板 df 添加一行数据。通过我在下面包含的内容,我得到了一个仪表板 df,它是 13 个 obs w/0 个变量

dashboard <- data.frame()

for (i in 1:x){
  node <- fromJSON(acct_hotspots_api_ep[i])
  node <- as.data.frame(node)
  
other functions/commands.....

  rewards <- merge(rewards, last24h)
  rewards <- merge(rewards, last7)
  rewards <- merge(rewards, last30)
  rewards <- merge(rewards, last90)
dashboard[i,] <- rewards[1,]
}

【问题讨论】:

标签: r json loops rbind


【解决方案1】:

正如 alistaire 所建议的,您可以在循环内实现 rbind()。如果没有您的数据,很难知道确切的结构,但您可以尝试以下方法:

# setup your empty df (the 'container')
dashboard <- data.frame()

# setup the loop
for(i in 1:10){

  #~~~~~ step 1: generate your 'rewards' ~~~~~

    # sample 'rewards' data
    rewards <- i * 2

    # and/or your other functions...
    # rewards <- merge(rewards, last24h)
    # rewards <- merge(rewards, last7)
    # rewards <- merge(rewards, last30)
    # rewards <- merge(rewards, last90)

  #~~~~~ step 2: put the rewards into a df ~~~~~
    rewards_df <- data.frame(rewards = rewards,
                            i = i) # sometimes it's handy to include the value of i that got you the result (for troubleshooting or later analysis)

  #~~~~~ step 3: rbind the rewards df to your container ~~~~~
    dashboard <- rbind(dashboard, rewards_df)

}

# view your resulting df
dashboard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多