问题陈述:我正在创建一个动态应用程序,其中用户选择输入并将其传递到URL以过滤数据。用户可以选择单个或多个值。我使用knitr::combine_words(Selected_Input,之前 = ",", = "", sep = ",")
以单引号和逗号分隔它们。但是当用户选择单个值时面临问题(如下所述):
#User selecting multiple values
Selected_Input <- c("Apple","Banana","Cherry")
knitr::combine_words(Selected_Input, before = ",", and = "", sep = ",")
结果:'Apple'、'Banana'、'Cherry'
适用于我的代码。
但是当用户选择单个值时
#User selecting single value
Selected_Input <- c("Apple")
knitr::combine_words(Selected_Input, before = ",", and = "", sep = ",")
结果:、Apple、
不起作用。因为它应该是单引号。
我在paste0中使用这个knitr::combine_words来创建一个动态URL。所以我正在寻找一种在paste0中工作的方法。
如果我在paste0
中使用cat()
函数,则输出在我的代码中不起作用。url不到位。
vector <- c("apple", "banana", "cherry")
out <- paste(sQuote(vector, FALSE), collapse=", ")
cat(out, "\n")
#> 'apple', 'banana', 'cherry'
cat(toString(sQuote(vector, FALSE)))
paste0("url",cat(toString(sQuote(vector, FALSE))),"url")
结果:'apple','banana','樱桃'[1]"urlurl"
关于什么:
fruits <- c("apple", "banana", "cherry")
all_fruit_in_one <- paste0(paste0("'", fruits, "'"), collapse = ", ")
cat(all_fruit_in_one)
输出:
'apple', 'banana', 'cherry'
另一个使用sQuote
的选项:
单引号或双引号文本通过与适当的单引号或双引号左和右组合。
vector <- c("apple", "banana", "cherry")
out <- paste(sQuote(vector, FALSE), collapse=", ")
cat(out, "\n")
#> 'apple', 'banana', 'cherry'
由reprex包(v2.0.1)于2022-07-08创建
我认为这只是因为你的代码中有一个错别字,也就是说,它应该是在 = "'"
之前,而不是在 = ","
之前。
> Selected_Input <- c("Apple","Banana","Cherry")
> knitr::combine_words(Selected_Input, before = "'", and = "", sep = ",")
'Apple','Banana','Cherry'
> Selected_Input <- c("Apple")
> knitr::combine_words(Selected_Input, before = "'", and = "", sep = ",")
'Apple'