小编mar*_*ist的帖子

使用单元素向量从命名列表中选择输入

因此,我正在尝试从命名列表中进行选择,这在遵循 selectInput 参考页面时效果很好:

## Only run examples in interactive R sessions
if (interactive()) {

# basic example
shinyApp(
  ui = fluidPage(
    selectInput("variable", "Variable:",
                c("Cylinders" = "cyl",
                  "Transmission" = "am",
                  "Gears" = "gear")),
    tableOutput("data")
  ),
  server = function(input, output) {
    output$data <- renderTable({
      mtcars[, c("mpg", input$variable), drop = FALSE]
    }, rownames = TRUE)
  }
)

# demoing optgroup support in the `choices` arg
shinyApp(
  ui = fluidPage(
    selectInput("state", "Choose a state:",
      list(`East Coast` = c("NY", "NJ", "CT"),
           `West Coast` = c("WA", …
Run Code Online (Sandbox Code Playgroud)

r list shiny

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

Foreach循环找不到对象

我正在尝试将foreach与并行后端一起使用以加快计算速度(如果这很重要,可以对{AUCRF}随机森林进行交叉验证以进行特征选择)。在这样做的过程中,我需要获取向量的子集。向量的名称可以更改,但可以作为字符向量访问。我使用eval(parse())构造(好主意?)来获取向量的子集。

例:

library(parallel)
library(foreach)
library(stats)

#create cluster
clu <- makeCluster(detectCores() - 1)
registerDoParallel(clu, cores = detectCores() - 1)

bar<-c("a","b","c","d")
rab<-c(2,3)
bar.name<-"bar"

#expected output in this example is a list containing ten times
bar[rab]
#or
eval(parse(text=paste(bar.name,"[rab]",sep="")))

foo<-foreach(m = 1:10, .packages = c("stats")) %dopar% {
  sink("foreach.txt")
      print(bar.name)
      print(parse(text=paste(bar.name,"[rab]",sep="")))
      print(eval(parse(text=paste(bar.name,"[rab]",sep=""))))
  foo.temp<-eval(parse(text=paste(bar.name,"[rab]",sep="")))
  return(foo.temp)
}
sink()
stopCluster(clu)
Run Code Online (Sandbox Code Playgroud)

但是我得到以下错误:

Error in { : task 1 failed - "Object 'bar' not found"
Run Code Online (Sandbox Code Playgroud)

我以为每个工作人员都会得到一个包含所有对象的工作区副本。知道我在做什么错吗?

parallel-processing foreach eval r

3
推荐指数
1
解决办法
4394
查看次数

标签 统计

r ×2

eval ×1

foreach ×1

list ×1

parallel-processing ×1

shiny ×1