You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言循环用户输入中向Data Frame追加数据

解决R语言数据录入应用的追加功能问题

原代码的核心问题是每次录入数据时都会创建全新的数据框,没有保留历史数据。以下是修改后的可实现数据追加的代码:

# 初始化用于存储所有学生数据的空数据框
all_students <- data.frame(
  name = character(),
  parent_name = character(),
  address = character(),
  marks = numeric(),
  stringsAsFactors = FALSE
)

stud_details <- function(current_data) {
  repeat {
    x <- readline(prompt = "Do you want to see the data frame of the details you entered (yes or no) : ")
    x <- tolower(x)
    if(x == "yes")
    {
      print(current_data)
      break
    }
  }
}

repeat{
  first_input <- readline(prompt=" Do you want to enter any data (yes or no): ")
  first_input <- tolower(first_input)
  if(first_input == "yes")
  {
    name <- readline(prompt="Enter Name: ")
    parent_name <- readline(prompt="Enter Parent's Name: ")
    address <- readline(prompt="Enter Address: ")
    # 将成绩转为数值型,避免字符型存储带来的问题
    marks <- as.numeric(readline(prompt="Enter Marks: "))
    
    # 将新录入的单行数据转为数据框并追加到总数据中
    new_entry <- data.frame(
      name = name,
      parent_name = parent_name,
      address = address,
      marks = marks,
      stringsAsFactors = FALSE
    )
    all_students <<- rbind(all_students, new_entry)
    
    # 调用函数展示当前所有数据
    stud_details(all_students)
  }
  else if (first_input == "no"){
    break
  }
}

关键修改点:

  • 全局初始化空数据框all_students,作为所有录入数据的存储容器
  • 使用<<-操作符在主循环中更新全局环境中的all_students,确保每次录入的数据都能被累积
  • 将marks转为数值型,符合成绩数据的类型要求
  • 修改stud_details函数,直接接收累积后的完整数据框进行展示,避免重复创建

内容的提问来源于stack exchange,提问作者Krishna Pardeshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:33:46