gpt4 book ai didi

r - 传递公式以在数据框中添加新列

转载 作者:行者123 更新时间:2023-12-02 04:58:45 24 4
gpt4 key购买 nike

我正在尝试使用 Shiny 的网络应用程序为数据框创建一个新列。
如果我们在此应用程序的公式选项中键入一个公式,它应该会收到该公式并应为数据框创建新列。我尝试了 attach(), subset() 函数,没有用...
你能帮帮我吗?

用户界面:

library(shiny)
shinyUI(pageWithSidebar(
headerPanel( "Data Frame", "Data Frame"),
sidebarPanel(

wellPanel(

fileInput('file', 'Select csv file', accept=c('text/csv') ),

checkboxInput('header', 'Header', TRUE),

gsub("label class=\"radio\"", "label class=\"radio inline\"",
radioButtons('sep', 'Separator', c(Comma=',', Semicolon=';', Tab='\t' )))

),

wellPanel(
checkboxInput('addcol', 'Create New Variable', FALSE),

conditionalPanel(condition="input.addcol!=0",
textInput('newvar', "Variable name","" ),
textInput('newformula', "Formula",""),
actionButton("apply","Apply Changes")
)
)

),

mainPanel(
tableOutput('contents')
)
))

服务器:

library(shiny)
library(stats)
library(reshape)
require(utils)
shinyServer(function(input,output,session){

dataset = reactive({
inFile<-input$file
if(is.null(inFile))
return(NULL)
read.csv(inFile$datapath, header=input$header, sep=input$sep)
})

alterdata = reactive({
if(input$apply==0){
dataset<-transform(dataset(), new='')
dataset <- rename(dataset, c(new=input$newvar))
dataset
}
else
{
attach(dataset())
dataset<-dataset()
dataset$new<-cat(input$newformula, "\n")
detach(dataset())
dataset <- rename(dataset, c(new=input$newvar))
dataset
}

#dataset
})


data = reactive({
if(input$addcol!=0)
{
alterdata()
}
else
{
dataset()
}
})

output$contents<-renderTable({
if (is.null(input$file)) { return() }
data()
})

})

})

最佳答案

我认为你应该尝试 dplyr 包中的 mutate_。有点像

        mutate_formula <- setNames(lazyeval::interp(input$newformula), input$newvar)
new_dataset <- dataset() %>%
mutate_(.dots = mutate_formula)

关于r - 传递公式以在数据框中添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18974511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com