R_Language 板


LINE

[问题类型]: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) [软体熟悉度]: 使用者(已经有用R 做过不少作品) [问题叙述]: 简单说我的问题是在子函式中对变数宣告跟赋值时使用 <<- 符号, 产生不稳定的结果。想知道是否误解 <<- 的用法、或是有更好的处理方法。 我的程式是受试者资料 coding, 每个人在自己的 csv 表格档案里里大概有数百个变数如下: 姓名 性别 年龄 教育 王大明 男 18 12 身高体重 身高 体重 BMI 体脂 腰围 180 70 NA 12 30 ... 我把档案 read.csv Name = array(0,dim = c(TotalNum,1)) Name[SubjNum] = as.character(Data$V1[2]) 然後再做些常模之类的查照计算。 最近档案实在太大, 我试着模组化每个分量表到不同的 .r 里,就出现了赋值上的问题 如前辈们所知,一个函式只能 return 一个值, 我看不太懂 assign 的功能、感觉不和我的需求, 最近尝试做了 setClass 但语法会变得太庞杂。 於是我试着全局赋值 <<- 变成在 Data.r 中 source('LoadBody.r') # Declaration LoadBody(1, 1) # Input for (SubjNum in 1:TotalNum) { read.csv LoadBody(2, SubjNum) } # Data frame eval(parse(text = paste("AllData = data.frame(", LoadBody(3, NowCodingNum), (...) ")", sep = ""))) 然後有个子函式 LoadBody.r 如下 LoadBody <- function(Task, SubjNum) { if (Task == 1) { Name <<- array(0,dim = c(TotalNum,1)) ... } else if (Task == 2) { Name[SubjNum] <<- as.character(Data$V1[2]) ... } else if (Task == 3) { return("Name = Name, (...) ") } } 但到最後出来的表格却有很多异常, 例如明明有资料的位置却是错误的行列(这已经再三确认过了)或是空白, 那些错误的点,在执行个别的子函式(e.g. LoadBody.r)时并不会发生。 试着查资料很难查到关键字, 只有在这篇 COS 论坛 的讨论中有实例: http://cos.name/cn/topic/106368 提到 <<- 是逐层向外搜索的,建议大家尽量避免。 在我的情况下则是有时正确,有时不正确。 我想请前辈建议适合的替代方案,或是我对 <<- 的赋值有什麽根本性的误解呢? 感谢! [程式范例]: 大致如上,具体的资料毕竟是受试隐私,也有点大 [关键字]: 函数 全域赋值 <<- --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.121.113
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1411634747.A.6A9.html ※ 编辑: skylikewater (140.112.121.113), 09/25/2014 16:53:09
1F:→ obarisk: 函数可return一个变数,变数可以是值可以是list也可以是e 09/25 18:02
2F:→ obarisk: nv 09/25 18:02
天啊!真是一句话点破!感谢 : ) ※ 编辑: skylikewater (140.112.121.113), 09/25/2014 18:20:48
3F:→ obarisk: <<-除非必要,还是少用 09/25 21:34
4F:→ andrew43: 回传 list 就好了。大多数的内建function都是这麽做的 09/25 21:44
5F:→ gsuper: 函式包函式是问题的主因 单纯函式用 <<- 还是方便的多 10/03 13:21
6F:→ gsuper: 同样的问题也会发生在跑平行运算的时後 10/03 13:21







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

请输入看板名称,例如:e-shopping站内搜寻

TOP