作者LIAR (玻璃做的大叔)
看板R_Language
标题[问题] 档名字串当成变数,get()有时成功有时失败
时间Sat Aug 21 10:10:52 2021
[问题叙述]:
我有个程式码会把外部档案的档名存入固定变数,之後要换档案分析,只要重新
choose.files再
tableName <- strsplit(basename(raw_name), ".", fixed = TRUE)[[1]][1]
> tableName
[1] "midterm_table"
就可以在tableName存入档名字串,我只要用get(tableName)就可以取代所有
原本主档名字串(本范例用
"midterm_table"),譬如:
sapply(get(tableName), class) %>% unique()
这是成功的。
下面的程式码,我是要列出表格中的NA,把他改成一个"noData"方便之後计算,
get(tableName)$Other.Injury[is.na(get(tableName)$Other.Injury)]
成功执行,会显示一整串NA(废话),但是当我多加後面修改的自串
get(tableName)$Other.Injury[is.na(get(tableName)$Other.Injury)] = "noData"
Error in get(tableName)$Other.Injury[is.na(get(tableName)$Other.Injury)] =
"noData" :
could not find function "get<-"
但是改成字串档名
midterm_table$Other.Injury[is.na(get(tableName)$Other.Injury)] = "noData"
这样就成功了。
我不懂那个could not find function "get<-"是怎麽回事,因为其他程式码都get这样
也没问题,何况同一句後面也有用
get(...)$,却唯独这个语法会出错。
请问有人知道问题出在哪边吗?
[环境叙述]:
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
(Traditional)_Taiwan.950
[3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 LC_NUMERIC=C
[5] LC_TIME=Chinese (Traditional)_Taiwan.950
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] openxlsx_4.0.17 magrittr_1.5
loaded via a namespace (and not attached):
[1] compiler_3.4.4 tools_3.4.4 yaml_2.1.14 Rcpp_1.0.0
--
起初,他们追杀共产主义者,我没有说话,因为我不是共产主义者;
接着,他们追杀犹太人,我没有说话,因为我不是犹太人;
後来,他们追杀工会成员,我没有说话,因为我不是工会成员;
此後,他们追杀天主教徒,我没有说话,因为我是新教教徒;
最後,他们奔我而来,却再也没有人站起来为我说话了。
《First They Came(他们首次来时)》,Martin Niemoller牧师(1892-1984)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.176.20.48 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1629511858.A.BBF.html
1F:→ locka: 请提供可重现错误的程式码~ 08/21 11:47
2F:→ locka: 是说我查get的说明,他是从命名空间(name space)中搜寻是否 08/21 11:53
3F:→ locka: 有符合的物件,会不会是你选取档案的程式码并没有在命名空 08/21 11:53
4F:→ locka: 间中?另外get(x)的x要用字串形式,不知道你为什麽可以不用 08/21 11:53
5F:→ locka: ?撇除这点,不知道是不是跟你赋值的动作有关?(总之没提供 08/21 11:53
6F:→ locka: 程式码只能乱猜…坐等其他大大回覆 哈哈哈) 08/21 11:53