使用 select.list 在交互式用户输入中打印小标题或数据框

printing a tibble or data frame in an interactive user input with select.list

我想在 R 控制台中捕获一些用户输入。除了捕获用户输入外,我还想打印一个 tibble 来帮助用户决定 select 的输入。这是一个简单的例子:

library(tidyverse)
input <- tibble(color = c("blue", "green"),
                words = c("test", "hello"))
                
utils::select.list(c(as.character(c("Yes", "No"))),
                     title = print(c(input, "\nDo all words contain letters?")),
                     multiple = FALSE)

这显然行不通,因为 select.list 说:

'title' must be NULL or a length-1 character vector

所以问题是我如何打印 tibble 和 question/message 并捕获用户输入。乐于使用某物。除了 select.input.

理想的印刷品是……。喜欢:

# A tibble: 2 x 2
  color words
  <chr> <chr>
1 blue  test 
2 green hello

Do all words contain letters?

1: Yes
2: No

你可以包装一个函数,如下所示:

f <- function(tbl) {
  print(tbl)
  cat("\n")
  utils::select.list(
    c(as.character(c("Yes", "No"))),
    title = "Do all words contain letters?",
    multiple = FALSE)
}

用法

f(input)

# A tibble: 2 x 2
  color words
  <chr> <chr>
1 blue  test 
2 green hello

Do all words contain letters? 

1: Yes
2: No