<我的代码>中的错误:分配目标扩展为非语言对象

我收到了错误


Error in <my code> : target of assignment expands to non-language object

要么


Error in <my code> : invalid (do_set) left-hand side to assignment

要么


Error in <my code> : invalid (NULL) left side of assignment

这是什么意思,我该如何预防?


largeQ
浏览 1936回答 1
1回答

HUWWW

当您尝试为不存在的变量或R不能视为的变量赋值时,会发生这些错误name。(名称是保存变量名称的变量类型。)要重现错误,请尝试:1:2 <- 1## Error in 1:2 <- 1 : target of assignment expands to non-language object1 <- 1## Error in 1 <- 1 : invalid (do_set) left-hand side to assignmentmean() <- 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 :&nbsp;##&nbsp; &nbsp;target of assignment expands to non-language object解决方案是assign("x", 1)或简单地"x" <- 1将get()与替换函数一起使用可处理与替换函数结合的更复杂的情况get。使用magrittr包装时,意外的尾随管道操作员也可能导致此错误。library(magrittr)x <- 1 %>%&nbsp;y <- 2##&nbsp; Error in 1 %>% y <- 2 :&nbsp;##&nbsp; &nbsp;target of assignment expands to non-language object又见中的R语言分配其答案详细一些相关的任务,特别是R语言定义的描述的奥秘的子集分配。
打开App,查看更多内容
随时随地看视频慕课网APP