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/cn.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灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP