R_Language 板


LINE

: → locka: 請提供可重現錯誤的程式碼~ 08/21 11:47 : → locka: 是說我查get的說明,他是從命名空間(name space)中搜尋是否 08/21 11:53 : → locka: 有符合的物件,會不會是你選取檔案的程式碼並沒有在命名空 08/21 11:53 : → locka: 間中?另外get(x)的x要用字串形式,不知道你為什麼可以不用 08/21 11:53 : → locka: ?撇除這點,不知道是不是跟你賦值的動作有關?(總之沒提供 08/21 11:53 : → locka: 程式碼只能亂猜…坐等其他大大回覆 哈哈哈) 08/21 11:53 以下是全部的log,先清除所有變數空間。 檔名和表格都有成功存到變數空間。檔名變數也是字串沒問題。 > rm(list=ls(all.names = TRUE )) > raw_name <- choose.files(caption = "Select a raw excel file", multi = FALSE, filters = matrix(c("excel files", "*.xlsx", "CSV files", "*.csv"), ncol = 2, byrow = TRUE)) > tableName <- strsplit(basename(raw_name), ".", fixed = TRUE)[[1]][1] > library(magrittr) > tableName %<>% paste("table", sep = "_"); > library(openxlsx) > assign(tableName, read.xlsx(raw_name)); > get(tableName)$event_height[is.na(get(tableName)$event_height)] = "noData" Error in get(tableName)$event_height[is.na(get(tableName)$event_height)] = "noData" : could not find function "get<-" > is.na(get(tableName)$event_height) [1] FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE [18] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE [35] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE [52] TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE get(tableName)是可以正常運作的。 > tableName [1] "2020rib_selection version2_table" 我get的tableName確實存在,所以我故意單獨呼叫這字串,貼回程式碼取代get的 段落,就可以執行了。 > `2020rib_selection version2_table`$event_height[is.na(get(tableName)$event_height)] = "noData" > is.na(get(tableName)$event_height) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [18] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [35] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [52] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 取代成功,沒有NA,都變成"noData"的字串。 其實我在意那句could not find function "get<-",但上網查找不到, 而且邏輯上也不懂為什麼其他地方get都成功,但是要賦值時才出問題。 -- 起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者; 接著,他們追殺猶太人,我沒有說話,因為我不是猶太人; 後來,他們追殺工會成員,我沒有說話,因為我不是工會成員; 此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒; 最後,他們奔我而來,卻再也沒有人站起來為我說話了。 《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984) --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.20.48 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1629555494.A.9E5.html ※ 編輯: LIAR (180.176.20.48 臺灣), 08/21/2021 22:21:38 ※ 編輯: LIAR (180.176.20.48 臺灣), 08/21/2021 22:22:47 ※ 編輯: LIAR (180.176.20.48 臺灣), 08/21/2021 22:23:20
1F:→ andrew43: 應該只是因為get不能賦值。 08/21 22:29
2F:→ andrew43: 有些function可以,例如colname,在手冊中會明確寫出來 08/21 22:31
3F:→ andrew43: 見 help(colnames) 中有 "colnames(x) <-" 08/21 22:31
4F:→ andrew43: 所以你應該改用assign才對。這比較像是R設計的方式 08/21 22:33
5F:→ LIAR: 不過我是get後面接了$,是改變欄位內容,不是get本身, 08/21 22:39
6F:→ LIAR: 這樣也不行嗎? 08/21 22:39
7F:推 locka: 查了一下 看來原因是這個:you can't assign something to 08/21 23:02
8F:推 locka: the result of a function. 這篇有比較詳細的解釋 08/21 23:02
9F:推 locka: https://reurl.cc/ze3jnk 08/21 23:02
10F:推 locka: get(x)做的事情其實是把x複製了一份並return 所以對copy的x 08/21 23:07
11F:推 locka: 賦值是不合R語法的;跟有沒有用$指定欄位沒關係 08/21 23:07
12F:→ LIAR: assign對$的欄位,我測試失敗耶?跑出一個名稱超長變數: 08/21 23:55
13F:→ LIAR: > `2020rib_selection version2_table$event_height[is... 08/21 23:56
14F:→ LIAR: [1] "noData" 08/21 23:56
15F:→ LIAR: 這樣的結果。 08/21 23:57
16F:→ LIAR: @locka: 不過我return後接$欄位有被承認,且我並非針對get的 08/21 23:59
17F:→ LIAR: return去修改,這部分差異我還是搞不懂。 08/22 00:00
※ 編輯: LIAR (180.176.20.48 臺灣), 08/22/2021 00:03:08
18F:→ locka: 是問為什麼 '…'$height[is.na(get(x)$…)] <- value 會成 08/22 00:10
19F:→ locka: 功嗎?這是因為你是對'…'$height[…]賦值,不是對get()回 08/22 00:10
20F:→ locka: 傳的東西賦值啊。get(…)回傳的東西就是複製的x 08/22 00:10
21F:→ LIAR: 阿...第一個超長變數那個是要回應 @andrew43說的assign方式 08/22 00:16
22F:→ LIAR: 至於get()$[...]有成功,我一直認為是get把字串貼上後就沒事 08/22 00:18
23F:→ LIAR: 回家了,所以顯示沒問題。而賦值也是想說get()$到這邊已經 08/22 00:20
24F:推 locka: andrew大說的assign可能要搭配迴圈的寫法才會得到你想要的 08/22 00:20
25F:推 locka: 結果 08/22 00:20
26F:→ LIAR: 進入欄位階端,get()應該功成身退,賦值是針對$...動作, 08/22 00:21
27F:→ LIAR: 為什不行?如果這樣還不行,有沒有其他方法可以解決? 08/22 00:22
28F:→ locka: get(x)是copy x --> get(x)$height等於是copy x的height, 08/22 00:24
29F:→ locka: 不是x的height 08/22 00:24
30F:→ locka: http://i.imgur.com/MWNU8ex.jpg 08/22 00:37
31F:→ andrew43: 直接對list做assign也是copy。感謝提醒。 08/22 01:24
32F:→ andrew43: 建議此問題直接用簡單的list來操作例。現在實在不易看懂 08/22 01:27







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP