亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

<我的代碼>中的錯誤:分配目標擴展為非語言對象

<我的代碼>中的錯誤:分配目標擴展為非語言對象

largeQ 2019-11-02 13:25:24
我收到了錯誤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這是什么意思,我該如何預防?
查看完整描述

1 回答

?
HUWWW

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語言定義的描述的奧秘的子集分配。


查看完整回答
反對 回復 2019-11-02
  • 1 回答
  • 0 關注
  • 2208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號