将项目粘贴到列表中,其中某些项目包含向量

rjs*_*jss 3 r

我正在尝试为API构建查询,并且我有一个函数,它是列表中的参数和值.如果我的一些参数有多个值,我会遇到问题.例如,

paramlist1 <- list(
  a = "1",
  b = "2",
  c = "3",
  d = "4"
)
paste(names(paramlist1), "=", paramlist1, collapse = "&", sep="")
Run Code Online (Sandbox Code Playgroud)

工作良好.但我有一些参数可以包含多个值.例如,

paramlist2 <- list(
  a = "1",
  b = "2",
  c = c("3", "4"),
  d = c("5", "6")
)
Run Code Online (Sandbox Code Playgroud)

我希望这能给我2个字符串: a=1&b=2&c=3&d=5a=1&b=2&c=4&d=6

也许我创建这个参数列表的方法不是最好的.谢谢

Dan*_*n Y 5

您需要将较短的向量重复为与较长向量相同的长度.一种方法是将列表转换为data.frame,然后您可以applypaste函数转换为每一行:

myfun <- function(x) paste(names(x), "=", x, collapse="&", sep="")

apply(as.data.frame(paramlist2), 1, myfun)
Run Code Online (Sandbox Code Playgroud)