'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 时,它运行时没有错误。
我正在尝试以编程方式初始化 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 没有给我这个确切的错误。
生的!!不被接受,所以你应该把 ` 放在 !!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 时,它运行时没有错误。