R如何正確動(dòng)態(tài)創(chuàng)建變量名,解決target of assignment expands to non-language object

在一個(gè)群里,看到一位朋友發(fā)了一堆代碼,

錯(cuò)誤代碼

以及一個(gè)報(bào)錯(cuò)信息,Error in paste(.....) :could not find function "paste←" (還有一個(gè)target of assignment expands to non-language object)

他非常不理解,為什么,明明paste的用法沒錯(cuò),sum的操作也沒有錯(cuò),但是代碼卻出錯(cuò)了呢?

這個(gè)報(bào)錯(cuò),在我剛學(xué)習(xí)R語言的時(shí)候,也遇到過。當(dāng)時(shí),我也想著手動(dòng)構(gòu)建一個(gè)變量名,然后給它賦值,方便后面調(diào)用,就跟我在shell腳本的操作一樣。

但實(shí)際上,這在R里面是行不通的,因?yàn)檫@相當(dāng)于讓一個(gè)字符串充當(dāng)變量名,最簡單的報(bào)錯(cuò)就是 paste("a",1) <- sum(1:10)

其實(shí),為一個(gè)值賦予一個(gè)名字,不是非得要變量名 = 變量值 這種形式,你可以用列表,數(shù)據(jù)框,命名向量。舉個(gè)例子,你計(jì)算了一堆值,每個(gè)值對(duì)應(yīng)一個(gè)基因,下面演示錯(cuò)誤和正確的形式

# 錯(cuò)誤形式
genename <- c("a","b","c","d", "f")

## 假設(shè)你計(jì)算的結(jié)果是x
x <- c(1:5)
for (i in seq(length(genename))){
   # 想為每個(gè)基因名創(chuàng)建一個(gè)變量名,是不可行的
   paste(genename[i]) <- x[i]
}

# 正確形式
genename <- c("a","b","c","d", "f")
x <- c(1:5)
x
for (i in seq(length(genename))){
  # 將基因名
  names(x)[i] <-  genename[I]
}
x

假如你計(jì)算的結(jié)果不是一個(gè)數(shù)值,而是一個(gè)數(shù)據(jù)框,那么我們可以用列表(list)來存放變量

genename <- c("a","b","c","d", "f")

result <- list()
for (i in seq(length(genename))){
  # 隨便算一個(gè)data.frame
  df <- data.frame()
  # 列表復(fù)制
  result[[genename[i]]] <- df
}

result

即便最開始的代碼可行,也是非常糟糕的,因?yàn)槟愫苡锌赡苌纱罅磕阕约憾疾恢獣缘淖兞俊?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 Google Play應(yīng)用市場對(duì)于應(yīng)用的targetSdkVersion有了更為嚴(yán)格的要求。從 2018 年...
    申國駿閱讀 65,941評(píng)論 15 98
  • 《來,我們說說孤獨(dú)》 1·他們都在寫孤獨(dú) 一個(gè)詩人 如果 不說說 內(nèi)心的孤獨(dú) 不將孤獨(dú) 寫進(jìn)詩里 是不是很掉價(jià)呢 ...
    聽太陽升起閱讀 4,607評(píng)論 1 7
  • 自幼貧民窟長大的女子,僥幸多念了兩本書,枉以為可以與人平起平坐??墒侨松鷱膩矶际墙恿?,我們卻天真的當(dāng)成了百米沖刺...
    Leeanran閱讀 5,913評(píng)論 1 5
  • 云舒老師,姓甚名誰,男的女的,多大歲數(shù),這些我全然不知。之所以要寫寫云舒老師,完全是因?yàn)樗麑懙奈恼?,如一個(gè)巨大的磁...
    數(shù)豆者m閱讀 2,540評(píng)論 6 9
  • """1.個(gè)性化消息: 將用戶的姓名存到一個(gè)變量中,并向該用戶顯示一條消息。顯示的消息應(yīng)非常簡單,如“Hello ...
    她即我命閱讀 5,243評(píng)論 0 6

友情鏈接更多精彩內(nèi)容