相关疑难解决方法(0)

将data.frame列转换为向量?

我有一个数据框,如:

a1 = c(1, 2, 3, 4, 5)
a2 = c(6, 7, 8, 9, 10)
a3 = c(11, 12, 13, 14, 15)
aframe = data.frame(a1, a2, a3)
Run Code Online (Sandbox Code Playgroud)

我尝试以下将其中一列转换为向量,但它不起作用:

avector <- as.vector(aframe['a2'])
class(avector) 
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

这是我能提出的唯一解决方案,但我认为必须有更好的方法来做到这一点:

class(aframe['a2']) 
[1] "data.frame"
avector = c()
for(atmp in aframe['a2']) { avector <- atmp }
class(avector)
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)

注意:我的上述词汇可能已关闭,如果是,请纠正我.我还在学习R的世界.另外,对这里发生的事情的任何解释都是值得赞赏的(即与Python或其他语言相关的内容会有所帮助!)

r vector type-conversion dataframe

136
推荐指数
9
解决办法
31万
查看次数

在Shiny中设置全局对象

假设我有以下server.R文件闪亮:

shinyServer(function(input, output) {
  output$plot <- renderPlot({
    data2 <- data[data$x == input$z, ]  # subsetting large dataframe
    plot(data2$x, data2$y)
  })
   output$table <- renderTable({
     data2 <- data[data$x == input$z, ]  # same subset. Oh, boy...
     summary(data2$x)
   })
})
Run Code Online (Sandbox Code Playgroud)

为了不必data2 <- data[data$x == input$z, ]在每个渲染调用中运行,我该怎么办?如果我执行以下操作,我得到一个"类型'对象'的对象'不是子集"错误:

shinyServer(function(input, output) {
  data2 <- reactive(data[data$x == input$z, ])
  output$plot <- renderPlot({
    plot(data2$x, data2$y)
  })
  output$table <- renderTable({
    data2 <- data[data$x == input$z, ]
    summary(data2$x)
  })
})
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

r subset shiny

9
推荐指数
1
解决办法
6914
查看次数

R闪亮:如何构建动态UI(文本输入)

我正在尝试使用R闪亮来构建动态textInput.用户应该在文本字段中写入,然后按下添加按钮以填充另一个字段.但是,每次按下按钮时,所有字段都变为空,就像我必须提前定义我想要的字段数一样.任何帮助将非常感激.

谢谢

这是我的代码:

library(shiny)

shiny::runApp(list(
ui = pageWithSidebar(
headerPanel("test"),
sidebarPanel(
  helpText("Alternatives list"),
  verbatimTextOutput("summary")
),    
mainPanel(  
  actionButton("obs","add"),
  htmlOutput("selectInputs")     
)  
)
, 

server = function(input,output){
observe({

  if (input$obs == 0) 
    return()
  isolate({

    output$selectInputs <- renderUI({
      if(!is.null(input$obs))  
        print("w")
      w <- ""
      for(i in 1:input$obs) {
        w <- paste(w,textInput(paste("a",i,sep=""),paste("a",i,sep="")))
      }
      HTML(w)
    })
    output$summary <- renderPrint({  
      print("your Alternative are:")

      for(i in 1:input$obs) {
        print(              
          input[[sprintf("a%d",i)]]
        )
      }
    })
    outputOptions(output, 'selectInputs', suspendWhenHidden=FALSE)
  })
})
}))
Run Code Online (Sandbox Code Playgroud)

r textinput shiny

5
推荐指数
1
解决办法
4773
查看次数

标签 统计

r ×3

shiny ×2

dataframe ×1

subset ×1

textinput ×1

type-conversion ×1

vector ×1