'Error in !`*tmp*` : invalid argument type' 使用时出错!! R中的运算符

'Error in !`*tmp*` : invalid argument type' error when using !! operator in R

我正在尝试以编程方式初始化 R 中的一些变量,以便变量名称成为字符串的评估内容。

仅此代码:

library(dplyr)

v <- 'sum.of.ranfx'
new_v = sym(v)

!!new_v <- vector(mode = "list", length = 122)

失败

Error in !`*tmp*` : invalid argument type

Google 没有给我这个确切的错误。 是一个被接受和赞成的 SO 答案示例,我认为我正在关注其语法示例。你能告诉我我做错了什么吗?

生的!!不被接受,所以你应该把 ` 放在 !!new 周围以使其工作

`!!new`= vector(mode = "list", length = 122)

我想是因为!习惯于 'reverse' 一个 T 或一个 F

例如:

> !TRUE
[1] FALSE
> !!TRUE
[1] TRUE

因此,当您尝试在不指定 !应用作字符,R 尝试执行此反向操作。 这可以理解吗?

您可以使用 assign -

v <- 'sum.of.ranfx'
assign(v, vector(mode = "list", length = 122))

我们可以用list2env

v <- 'sum.of.ranfx'
list2env(setNames(list(vector(mode = "list", length = 122)), v), .GlobalEnv)

-检查对象

> head(sum.of.ranfx)
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

对于好奇的未来读者,这是我做错的地方:附上了错误的包裹。除了 library(dplyr) 之外,我还需要 library(rlang),我对以下事实感到困惑:互联网上的一段示例代码明确显示附加了 dplyr,而不是 rlang,但这不是所以回答我在问题中链接。当附加 rlang 时,它运行时没有错误。