Re: [問題] 檔名字串當成變數,get()有時成功有時失敗
: → 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://www.ptt.cc/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
→
08/21 22:29,
3年前
, 1F
08/21 22:29, 1F
→
08/21 22:31,
3年前
, 2F
08/21 22:31, 2F
→
08/21 22:31,
3年前
, 3F
08/21 22:31, 3F
→
08/21 22:33,
3年前
, 4F
08/21 22:33, 4F
→
08/21 22:39,
3年前
, 5F
08/21 22:39, 5F
→
08/21 22:39,
3年前
, 6F
08/21 22:39, 6F
推
08/21 23:02,
3年前
, 7F
08/21 23:02, 7F
推
08/21 23:02,
3年前
, 8F
08/21 23:02, 8F
推
08/21 23:02,
3年前
, 9F
08/21 23:02, 9F
推
08/21 23:07,
3年前
, 10F
08/21 23:07, 10F
推
08/21 23:07,
3年前
, 11F
08/21 23:07, 11F
→
08/21 23:55,
3年前
, 12F
08/21 23:55, 12F
→
08/21 23:56,
3年前
, 13F
08/21 23:56, 13F
→
08/21 23:56,
3年前
, 14F
08/21 23:56, 14F
→
08/21 23:57,
3年前
, 15F
08/21 23:57, 15F
→
08/21 23:59,
3年前
, 16F
08/21 23:59, 16F
→
08/22 00:00,
3年前
, 17F
08/22 00:00, 17F
※ 編輯: LIAR (180.176.20.48 臺灣), 08/22/2021 00:03:08
→
08/22 00:10,
3年前
, 18F
08/22 00:10, 18F
→
08/22 00:10,
3年前
, 19F
08/22 00:10, 19F
→
08/22 00:10,
3年前
, 20F
08/22 00:10, 20F
→
08/22 00:16,
3年前
, 21F
08/22 00:16, 21F
→
08/22 00:18,
3年前
, 22F
08/22 00:18, 22F
→
08/22 00:20,
3年前
, 23F
08/22 00:20, 23F
推
08/22 00:20,
3年前
, 24F
08/22 00:20, 24F
推
08/22 00:20,
3年前
, 25F
08/22 00:20, 25F
→
08/22 00:21,
3年前
, 26F
08/22 00:21, 26F
→
08/22 00:22,
3年前
, 27F
08/22 00:22, 27F
→
08/22 00:24,
3年前
, 28F
08/22 00:24, 28F
→
08/22 00:24,
3年前
, 29F
08/22 00:24, 29F
→
08/22 00:37,
3年前
, 30F
08/22 00:37, 30F
→
08/22 01:24,
3年前
, 31F
08/22 01:24, 31F
→
08/22 01:27,
3年前
, 32F
08/22 01:27, 32F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章