使用操作按钮在闪亮的 R 中添加包含现有数据框的新行

2024-05-21

我正在构建一个闪亮的表单,它将从 textInput 字段获取数据,并将这些输入与文本文件(将通过文件输入上传)组合起来,并在主面板中显示输出。有一个操作按钮用于第一次更新数据(从文本输入中获取数据并与处理后的文本文件合并),我添加了另一个操作按钮用于添加新数据(此添加新数据的目的是添加新数据)一组数据与现有数据作为行,新的数据组将通过文件输入上传)。下面给出了示例数据集,它是纯文本格式的文件。该样本数据集可以被视为第二个文本文件。 样本数据:

#         AREA     ADC-MEAN  ADC-STD DEV  ADC-MIN    ADC-MAX    ADC-MED  
 1      12.0000  0.000644667 1.96669e-005  0.000606000  0.000671000  0.000644000
 2      12.0000  0.000610250 1.43154e-005  0.000577000  0.000624000  0.000617000

我根据场景编写了shinnyApp。我可以通过合并和输出为表格来更新文本输入和文本文件输出。但无法将一组新数据添加为行。脚本如下:

library(shiny)
library(ggplot2)
library(xlsx)
library(xlsxjars)
library(rJava)
library(shinythemes)

# Define UI -----------
# ---------------------

ui <- fluidPage(theme = shinytheme("sandstone"),

                # header
                headerPanel("DTI post analysis conversion"),

                sidebarLayout(
                  # sidebar for form
                  sidebarPanel(
                    h3("Information",""),
                    textInput("ani_id", "Patient ID",""),
                    textInput("scan_id", "Scan ID",""),
                    textInput("Tech_id", "Tech Id",""),
                    textInput("Age_weeks", "Age weeks",""),

                    fileInput("textfile", "Upload the text file"),
                    actionButton("update", "Update"),
                    helpText("Click to insert the data "),
                    br(),
                    actionButton("addEntry", "Add New Data"),
                    helpText("Click to insert new data "),
                    br(),
                    downloadButton("downloadData", "Download"),
                    helpText("Click for download the data (.csv) ")
                  ),

                  # output for viewing
                  mainPanel(

                    DT::dataTableOutput("tableDT") 

                  )   
                )
)


# Define server logic ------
# --------------------------

server <- function(input, output) {

  # process the textinput
  Frontal_Cortex_table <- eventReactive(input$update,{  


    # creating table

    aniRoi2 <- data.frame(Animal_ID = rep(input$ani_id,2), 
                          Scan_ID = rep(input$scan_id,2), 
                          Tech_ID = rep(input$Tech_id,2), 
                          Age_weeks = rep(input$Age_weeks,2), 
                          stringsAsFactors = FALSE)

    return(aniRoi2)
  })

  # process the text file and download

  textdata <- eventReactive(input$update,{
    file1 <- input$textfile
    if(is.null(file1)){return()} 
    a <- read.table(file= file1$datapath, 
                    sep="\t",
                    fill=FALSE, 
                    strip.white=TRUE)[1:2,]

    # Split the text file and shape as column
    af <- as.character(a)
    af1 <- matrix(unlist(strsplit(af, split=" +")), ncol=7, byrow =TRUE)
    ad <- data.frame(af1[1:2,3:7])
    colnames(ad)<- c("ADC_MEAN", "ADC_STD", "ADC_MIN", "ADC_MAX", "ADC_MED")

    return(ad)
  })

  # merge two function as data.frame
  mytable2 <-reactive({

    dm = cbind.data.frame(Frontal_Cortex_table(), textdata())

  })

  # add new row (?)

  addData <- observeEvent(input$addEntry, {
    mytable2 <- isolate({
      newLine <- reactive({cbind.data.frame(Frontal_Cortex_table(), textdata())})
      rbind.data.frame(mytable2,newLine)
    })
  })

  # output the data as table    
  output$tableDT <- DT::renderDataTable(
    mytable2()
  )

  # download the file
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("DTI", "csv", sep = ".")
    },
    content = function(file) {
      write.csv(mytable2(), file, row.names = FALSE)
    }
  )

}

# Run the app ----------
# ----------------------

shinyApp(ui = ui, server = server)

我收到错误消息指出:

Warning: Error in [[: object of type 'closure' is not subsettable Stack trace (innermost first):
    73: rbind.data.frame
    66: isolate
    65: observeEventHandler [/Users/rahatjahan/Dropbox/Database dev/DTIApp/Ask questions.R#95]
     1: runApp

我知道,这是一篇很长的文章,但请尝试解释并提供所有内容,以免造成任何混乱。

您的意见和建议将不胜感激。


问题解决了,每次迭代都会添加新行。 新的文本数据集:

#         AREA     ADC-MEAN  ADC-STD DEV  ADC-MIN    ADC-MAX    ADC-MED  
 1      12.0000  0.000644667 1.96669e-005  0.000606000  0.000671000  0.000644000
 2      12.0000  0.000610250 1.43154e-005  0.000577000  0.000624000  0.000617000
 3     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 4     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 5     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 6     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 7     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 8     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 9     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 10     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
#         AREA     FA-MEAN  FA-STD DEV     FA-MIN      FA-MAX        FA-MED  
 1      12.0000     0.233833    0.0171773     0.201000     0.262000     0.239000
 2      12.0000     0.247417    0.0135275     0.220000     0.270000     0.248000
 3     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 4     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 5     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 6     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 7     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 8     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 9     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
 10     0.000000     0.000000     0.000000     0.000000     0.000000     0.000000
ADC-MEAN
  0.000644667
  0.000610250
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
ADC-STD DEV
 1.96669e-005
 1.43154e-005
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
FA-MEAN
     0.233833
     0.247417
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
FA-STD DEV
    0.0171773
    0.0135275
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000
     0.000000

以及修改后的代码

library(shiny)
library(ggplot2)
library(xlsx)
library(xlsxjars)
library(rJava)
library(shinythemes)

# Define UI -----------
# ---------------------

ui <- fluidPage(theme = shinytheme("sandstone"),

                # header
                headerPanel("DTI post analysis conversion"),

                sidebarLayout(
                  # sidebar for form
                  sidebarPanel(
                    h3("Information",""),
                    textInput("ani_id", "Patient ID",""),
                    textInput("scan_id", "Scan ID",""),
                    textInput("Tech_id", "Tech Id",""),
                    textInput("Age_weeks", "Age weeks",""),

                    fileInput("textfile", "Upload the text file"),
                    actionButton("update", "Insert 1st Data Set"),
                    helpText("Click to insert the data "),
                    br(),
                    fileInput("anothertextfile", "Upload another Text file"),
                    actionButton("addEntry", "Add New Data"),
                    helpText("Click to insert new data "),
                    br(),
                    actionButton("combine", "Combine the data sets"),
                    downloadButton("downloadData", "Download"),
                    helpText("Click for download the data (.csv) ")
                  ),

                  # output for viewing
                  mainPanel(

                    DT::dataTableOutput("tableDT"),
                    DT::dataTableOutput("tableDT2") 


                  )   
                )
)


# Define server logic ------
# --------------------------

server <- function(input, output) {

  # process the textinput
  Frontal_Cortex_table <- reactive({  


    # creating table

    aniRoi2 <- data.frame(Animal_ID = rep(input$ani_id,2), 
                          Scan_ID = rep(input$scan_id,2), 
                          Tech_ID = rep(input$Tech_id,2), 
                          Age_weeks = rep(input$Age_weeks,2), 
                          stringsAsFactors = FALSE)

    return(aniRoi2)
  })

  # process the text file and download

  textdata <- reactive(
    {
    file1 <- input$textfile
    if(is.null(file1)){return()} 
    #read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)
    a <- read.table(file= file1$datapath, 
                    sep="\t",
                    fill=FALSE, 
                    strip.white=TRUE)[1:20,]

    # Split the text file and shape as column
    af <- as.character(a)
    #class(af)
    #af
    #nrow(a)
    af1 <- matrix(unlist(strsplit(af, split=" +")), ncol=7, byrow =TRUE)
    # typeof(af1)
    # af1
    ad <- data.frame(af1[1:2,3:7], af1[11:12, 3:7])

    colnames(ad)<- c("ADC_MEAN", "ADC_STD", "ADC_MIN", "ADC_MAX", "ADC_MED", 
                     "FA_MEAN", "FA_STD", "FA_MIN", "FA_MAX", "FA_MED")


    return(ad)
  })


  # merge two function as data.frame
  mytable2 <-eventReactive(input$update,{

     dm <<- cbind.data.frame(Frontal_Cortex_table(), textdata())

  })

  # add new row (?)

  addData1 <- eventReactive(input$addEntry, {
      newLine <<- cbind.data.frame(Frontal_Cortex_table(), textdata())
  })


  addData <- eventReactive(input$addEntry, {
    dm <<- rbind.data.frame(mytable2(),addData1())
  })

  addData2 <- eventReactive(input$addEntry, {
    dm <<- rbind.data.frame(dm,addData1())
  })

  # output as data table      
  output$tableDT <- DT::renderDataTable(
    mytable2()
  )

# the combined data set with added row  
  output$tableDT2 <- DT::renderDataTable(
    addData2()
  )
  # download the file
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("DTI", "csv", sep = ".")
    },
    content = function(file) {
      write.csv(mytable2(), file, row.names = FALSE)
    }
  )

}

# Run the app ----------
# ----------------------

shinyApp(ui = ui, server = server)

希望这会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用操作按钮在闪亮的 R 中添加包含现有数据框的新行 的相关文章

  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • 如何对同一列上的数据帧列表中的所有数据帧进行排序?

    我有一个数据框列表dataframes list 举个例子 我把dput dataframes list 在底部 我想对列列表中的所有数据框进行排序enrichment 我可以对一个数据框进行排序 first dataframe lt da
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 将年月格式转换为 POSIXct [重复]

    这个问题在这里已经有答案了 我有一些年月形式的数据 我想将其格式化以用于绘图ggplot date lt c 2016 03 2016 04 2016 05 2016 06 2016 07 2016 08 2016 09 2016 10 2
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 计算每个唯一值出现的次数

    假设我有 v rep c 1 2 2 2 25 现在 我想计算每个唯一值出现的次数 unique v 返回唯一值是什么 但不返回它们的数量 gt unique v 1 1 2 我想要一些能给我的东西 length v v 1 1 25 le
  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用

随机推荐

  • 文件上传后如何隐藏上传按钮?

    我使用 blueimp 和 jquery UI 进行文件上传 我想在上传文件后隐藏此按钮 并在照片被删除时再次显示它 我该怎么做呢 这是我的 HTML
  • 使用 scikit-learn 进行二次采样 + 分类

    我正在使用 Scikit learn 进行二元分类任务 并且我有 0 级 有 200 个观察值 第 1 类 有 50 个观察值 而且因为我有不平衡的数据 我想抽取多数类的随机子样本 其中观察数量与少数类相同 并且希望使用新获得的数据集作为分
  • 如何关闭与数据库的现有连接

    我想关闭与 MS SQL Server 的现有连接 以便可以通过编程方式对该数据库进行恢复 这应该会断开其他所有人的连接 并使您成为唯一的用户 alter database YourDb set single user with rollb
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • PhotoChooserTask 抛出未处理的异常

    我已经有了这段代码 我使用它来显示一个按钮 该按钮允许用户从他的库中选择图像并将其用作我的应用程序的背景 所以我创建了一个PhotoChooserTask 将其设置为显示相机并将其绑定到任务完成时必须执行的方法 该按钮将通过显示PhotoC
  • has_many 关系中的 Active Record 对象何时保存?

    我正在使用 Rails 1 2 3 是的 我知道 并且对如何使用感到困惑has many适用于对象持久性 为了举例 我将使用它作为我的声明 class User lt ActiveRecord Base has many assignmen
  • 'numpy.float64'对象没有属性'translate'在Python中将值插入Mysql

    import dataset db dataset connect table db 当我尝试向 Mysql 表中插入一些值时 发生了此错误 我插入表中的示例值 print Buy ticker price date OType OSize
  • 在代码中旋转按钮(或其中的文本)

    我必须通过编码随机旋转按钮 或里面的文本 它是相同的 API级别低于11是否有button setRotate x 好吧 看了一下 答案是 很复杂 您可以使用旧的动画框架旋转按钮 例如像这样 Button button Button fin
  • 运行“npm install”:Node-gyp 错误 - MSBUILD.exe 失败,退出代码:1

    我在跑npm install在 Windows 上安装我的项目中的所有软件包 然后我收到有关 MSBUILD exe 的错误 gyp ERR stack Error C Program Files x86 Microsoft Visual
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • 如何使用 Cucumber 和 Rspec 测试 Rails 3 引擎?

    如果这个问题有点主观 我深表歉意 我正在尝试找出使用 Cucumber 和 Rspec 测试 Rails 3 引擎的最佳方法 为了测试引擎 需要 Rails 3 应用程序 这是我目前正在做的事情 通过运行以下命令将 Rails 测试应用程序
  • 如何使用 HTML5 + Javascript 或服务器端语言仅裁剪某些区域?

    在提出我的问题之前 我有一个测试页 以便每个人都能更好地理解我的问题 网址是http iamthemoon com crop http iamthemoon com crop 您可以移动红色选区 我喜欢只裁剪红色选区的区域 我认为这可以在
  • Tensorflow 对 Python3.11 的支持

    我在 Windows10 PC 上安装了 Python3 11 0 尝试使用以下命令安装张量流 pip install tensorflow 给出错误 访问tensorflow网站后 我意识到它仅支持3 7 3 10 我应该降级 pytho
  • heroku 上的 bitbucket 私有存储库

    我有一个需要 gem 的 Rails 应用程序 我将这个 gem 托管在私有存储库的 bitbucket 上 在我的 Gemfile 中 我添加了 gem 如下所示 gem my gem git gt gi email protected
  • Bootstrap 4 具有 d-flex 类的列表项不响应 .hide()?

    当我添加课程时d flex我的引导程序 4 ul 列表项不响应 hide 不再 尽管style display none 被添加到 DOM 中 The d flex用于Bootstrap 4 列表徽章 https getbootstrap
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • 使用操作按钮在闪亮的 R 中添加包含现有数据框的新行

    我正在构建一个闪亮的表单 它将从 textInput 字段获取数据 并将这些输入与文本文件 将通过文件输入上传 组合起来 并在主面板中显示输出 有一个操作按钮用于第一次更新数据 从文本输入中获取数据并与处理后的文本文件合并 我添加了另一个操