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 關注
- 2208 瀏覽
添加回答
舉報