我在checkboxGroupInput
语句中有很长的复选框列表。复选框的标签和值对应于数据框中colnames
的子集。
例如,数据框称为userdf
,其列数如下:
A B C
1 1 0
如果checkboxGroupInput
的名称是sotags
,那么我希望input$sotags
修改数据框,使其包含A
但不包含B
或{ {1}}:
C
我对此的蹩脚尝试是:
A B C
1 0 0
如果您想查看我的整个工作代码,请点击此处:https://github.com/hack-r/coursera_shiny
答案 0 :(得分:1)
我认为这应该与您的代码产生相同的结果:
userdf[,input$sotags] <- 1
userdf[,! colnames(userdf) %in% input$sotags] <- 0
但这将导致所有行相等的数据框... 你为什么需要那个?
答案 1 :(得分:1)
让我们假设您从代码中的userdf
开始,而不是被动反应,就像这样
userdf<-data.frame(A=NA,B=NA,C=NA)
和input$sotags
是您的checkboxGroupInput
,其中包含character
和您的一个列名。
然后你可以创建一个新的data.frame:
userdf2<-reactive({
as.data.frame(matrix(as.numeric(colnames(userdf)==input$sotags),nrow=1,
dimnames=list(NULL,colnames(userdf)))
})
编辑添加:
如果input$sotags
是字符向量,则可以在==
开头的行中将%in%
替换为as.data.frame
,并在所有选定的列中放置1。