首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: fromJSON动态键控

R: fromJSON动态键控
EN

Stack Overflow用户
提问于 2022-01-20 16:16:33
回答 1查看 24关注 0票数 1

我有一个包含鸟类信息的JSON文件。看起来有点像这样:

代码语言:javascript
复制
{
  "Cardinal":{
    "Wingspans":[22.9,21.2,23.4],
    "Sightings":["Stream","Scramble","Stream"],
    "Gender":["M","F","M"],
    ...
  },
  "Bluejay":{...},
  ...
}

在我的应用程序中,我使用selectInput允许用户在不同类型的鸟(红衣主教、蓝宝石、君科等)之间进行选择,并更新数据。我已经成功地为任何给定的单个情况硬编码了键,例如:

代码语言:javascript
复制
    savedData <<- fromJSON(file = "birds.json")
    wingspans <<- data.frame(savedData$Cardinal$Wingspans)
    sightings <<- data.frame(savedData$Cardinal$Sightings)

诸若此类。我想要的是“红衣主教”部分使用selectInput Id "typeSelect“,以便当应用程序加载数据时,它使用用户从下拉菜单中指定的任何一种鸟。这里有一些错误的想法没有解决这个问题:

代码语言:javascript
复制
    wingspans <<- data.frame(paste0("savedData$",input$typeSelect,"$Wingspans"))
    wingspans <<- data.frame(savedData$(input$typeSelect)$Wingspans)
    wingspans <<- data.frame(savedData$input$typeSelect$Wingspans)

这些都会产生语法错误,或者只是给我一个1x1数据帧,其中粘贴的路径名作为单元格值。谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-20 16:54:40

它是一个对象值,所以使用[[而不是$,因为$将从字面上计算

代码语言:javascript
复制
wingspans <- data.frame(savedData[[input$typeSelect]]$Wingspans)

或者可以使用[[进行所有提取。

代码语言:javascript
复制
wingspans <- data.frame(savedData[[input$typeSelect]][["Wingspans"]])

或者如果我们加载了purrrpluck也可能是有用的。

代码语言:javascript
复制
library(purrr)
wingspans <- data.frame(pluck(savedData, input$typeSelect, "Wingspans"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70789706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档