在函数中调用 sep=“ ”

Calling sep=" " inside the function

提问人:Aleksandra 提问时间:4/2/2020 更新时间:4/2/2020 访问量:198

问:

所以,我想在do.call(paste)中制作一个参数sep = “ ”。

fun <- function(x, sep=" "){
  stopifnot(is.list(x))
  k <- length(x)
  n <- lengths(x)
  stopifnot(length(unique(n))==1)
  do.call(paste, c(x, sep))
}

不幸的是,这个不起作用,我找不到任何类似的主题。 感谢您的帮助:)

r 粘贴 do.call

评论

0赞 Daniel O 4/2/2020
为什么要通过函数传递非变量?你能不能简单地使用do.call(paste, c(x, sep=" "))

答:

0赞 ThomasIsCoding 4/2/2020 #1

我认为你可能需要 within ,因为 lhs 是 ,而 rhs 是函数的输入参数,即sep = sepdo.callseppastesepfun

fun <- function(x, sep=" "){
  stopifnot(is.list(x))
  k <- length(x)
  n <- lengths(x)
  stopifnot(length(unique(n))==1)
  do.call(paste, c(x, list(sep=sep)))
}

> fun(as.list(seq(3)),"-")
[1] "1-2-3"

评论

0赞 ThomasIsCoding 4/2/2020
@Aleksandra 不客气。如果您认为我的回答对您的问题有所帮助并解决了您的问题,请随时接受,谢谢!
0赞 user2554330 4/2/2020
使用可能更好。它在这里给出了相同的结果(因为是一个列表,因此会自动强制到列表),但是在将来的某一天,当不一定是列表时,您可能会尝试重用此代码。do.call(paste, c(x, list(sep = sep)))xsepx