我试图找到一种优雅的方式来链接功能参数和httr
的呼叫查询列表。假设我们有两个字符向量,表示动物和颜色
animals = "dog"
colors = "red"
如果我使用查询参数
list(animal=animals,color=colors)
它会产生预期的结果。另一方面,如果我想要其中一个组件的多个参数
animals = c("dog","cat")
相同的列表会创建
$animal
[1] "dog" "cat"
$color
[1] "red"
当httr
需要像
$animal
[1] "dog"
$animal
[1] "cat"
$color
[1] "red"
如何优雅地创建适当的列表,而不是将字符向量作为元素,将创建多个具有相同名称的元素?
答案 0 :(得分:2)
尝试:
foo <- list(animals = c("dog","cat"), color = "red")
foo <- as.list(unlist(foo))
foo <- setNames(foo, gsub("[[:digit:]]", "", names(foo)))
列表变得不那么有用,因为按名称选择不起作用,但应该是您想要的格式。如果您的列表中有数字,则重命名不是很好,但这可能是您需要单独解决的问题。
<强>更新强>
我不喜欢用正则表达式重命名。你也可以尝试这样的东西来删除最后一行:
as.list(setNames(unlist(foo), rep(names(foo), sapply(foo, length))))
使用setNames
和gsub
确切一点。
答案 1 :(得分:0)
c(animals=as.list(animals),colors=colors)
$animals1
[1] "dog"
$animals2
[1] "cat"
$colors
[1] "red"