1 回答
TA贡献1874条经验 获得超12个赞
当您尝试为不存在的变量或R不能视为的变量赋值时,会发生这些错误name。(名称是保存变量名称的变量类型。)
要重现错误,请尝试:
1:2 <- 1
## Error in 1:2 <- 1 : target of assignment expands to non-language object
1 <- 1
## Error in 1 <- 1 : invalid (do_set) left-hand side to assignment
mean() <- 1
## Error in mean() <- 1 : invalid (NULL) left side of assignment
(您能猜出三个错误中的哪个NULL <- 1返回了吗?)
R的一个鲜为人知的功能是您可以为字符串分配值:
"x" <- 1 # same as x <- 1
如果您尝试使用更复杂的表达式(例如)来构造字符串,则此方法将无效paste。
paste0("x", "y") <- 1
## Error: target of assignment expands to non-language object
看到
在R中创建带有“ paste”的变量名?以及
如何动态命名变量?
解决方案是使用assign:
assign(paste0("x", "y"), 1)
出现这种情况的常见情况是尝试分配给数据帧的列。通常会尝试将paste()作业的左手放在一起,即
paste0("my_dataframe$","my_column") <- my_value
通常,这里的最佳解决方案不是求助于get或assign要记住,我们可以使用[or [[运算符通过字符变量来引用数据框列:
x <- "my_column"
my_dataframe[,x] <- value #or...
my_dataframe[[x]] <- value
同样,您无法分配的结果get。
get("x") <- 1
## Error in get("x") <- 1 :
## target of assignment expands to non-language object
解决方案是
assign("x", 1)
或简单地
"x" <- 1
将get()与替换函数一起使用可处理与替换函数结合的更复杂的情况get。
使用magrittr包装时,意外的尾随管道操作员也可能导致此错误。
library(magrittr)
x <- 1 %>%
y <- 2
## Error in 1 %>% y <- 2 :
## target of assignment expands to non-language object
又见中的R语言分配其答案详细一些相关的任务,特别是R语言定义的描述的奥秘的子集分配。
- 1 回答
- 0 关注
- 2063 浏览
添加回答
举报