如何将符号放入参数列表
How do I place a symbol into an argument list
给定一个 symbol
:
sym <- as.symbol("x")
我想创建一个 alist
并以此符号作为名称。
correct_answer <- alist(x = )
以下内容不太有效,因为它将 NULL
作为值。
setNames(list(NULL), deparse(sym))
答案的第一个元素似乎是一个空符号。
class(correct_answer[[1]])
## [1] "name"
deparse(correct_answer[[1]])
## [1] ""
但是您不能使用 as.symbol()
创建空符号。
as.symbol("")
## Error in as.symbol("") : attempt to use zero-length variable name
如何将符号放入参数列表?
只需创建一个虚拟 alist
,然后通过解析符号来覆盖名称。
setNames(alist(dummy = ), deparse(sym))
或者,可以使用 formals
函数创建参数列表。我正在将您的答案与 formals
进行比较
使用 alist()
- 根据@Richie Cotton 的回答
sym1 <- as.symbol('x')
sym2 <- as.symbol('y')
sym3 <- as.symbol('z')
str(c(setNames(alist(dummy = ), deparse(sym1)),
setNames(alist(dummy = ), deparse(sym2)),
setNames(alist(dummy = ), deparse(sym3))))
# List of 3
# $ x: symbol
# $ y: symbol
# $ z: symbol
没有alist()
使用 formals
不带符号
str(formals(function(x,y,z){}))
# Dotted pair list of 3
# $ x: symbol
# $ y: symbol
# $ z: symbol
使用 formals
和符号
c_alist <- function( x )
{
setNames( formals(c_alist), deparse(x) ) # or # setNames( formals(c_alist), as.character(x) )
}
str(sapply( c(sym1, sym2, sym3), c_alist ) )
# $ x: symbol
# $ y: symbol
# $ z: symbol
给定一个 symbol
:
sym <- as.symbol("x")
我想创建一个 alist
并以此符号作为名称。
correct_answer <- alist(x = )
以下内容不太有效,因为它将 NULL
作为值。
setNames(list(NULL), deparse(sym))
答案的第一个元素似乎是一个空符号。
class(correct_answer[[1]])
## [1] "name"
deparse(correct_answer[[1]])
## [1] ""
但是您不能使用 as.symbol()
创建空符号。
as.symbol("")
## Error in as.symbol("") : attempt to use zero-length variable name
如何将符号放入参数列表?
只需创建一个虚拟 alist
,然后通过解析符号来覆盖名称。
setNames(alist(dummy = ), deparse(sym))
或者,可以使用 formals
函数创建参数列表。我正在将您的答案与 formals
使用 alist()
- 根据@Richie Cotton 的回答
sym1 <- as.symbol('x')
sym2 <- as.symbol('y')
sym3 <- as.symbol('z')
str(c(setNames(alist(dummy = ), deparse(sym1)),
setNames(alist(dummy = ), deparse(sym2)),
setNames(alist(dummy = ), deparse(sym3))))
# List of 3
# $ x: symbol
# $ y: symbol
# $ z: symbol
没有alist()
使用 formals
不带符号
str(formals(function(x,y,z){}))
# Dotted pair list of 3
# $ x: symbol
# $ y: symbol
# $ z: symbol
使用 formals
和符号
c_alist <- function( x )
{
setNames( formals(c_alist), deparse(x) ) # or # setNames( formals(c_alist), as.character(x) )
}
str(sapply( c(sym1, sym2, sym3), c_alist ) )
# $ x: symbol
# $ y: symbol
# $ z: symbol