全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4219 11
2017-02-14
悬赏 20 个论坛币 已解决
用R分析数据时为了提高效率,经常要自己编写一些简单的函数。但是我不知道如何在函数的参数中表示参数数据集中的某列。比如函数中要用到数据df的某列a和某列b进行分析。设置函数参数为recommend <- function(data, var1, var2) {data美元符号var1...} (var1和var2是data中的列名) , 应用函数时写recommend(df, a, b) 会报错,好像运行函数时软件并不会将函数主体中的“data美元符号var1”替换为“df美元符号a”。不知道大家在自编函数时一般是怎么指代参数数据集和参数列的。

例子:
函数参数中的列名指代其所在的数据集,程序可以运行。如根据三种药物(下例向量a)的治疗有效率来推荐药物:
复制代码
但是这样不利于函数的循环使用。我希望能够使用函数时设置参数recommend(df, a, b)就能得到结果,但是不知道在函数内部要怎么处理或者指代。还请大家指教!谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-2-14 19:07:17
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-14 20:03:55
刚接触R一年多,也来讨论一下,这个话题有点意思;
自建函数的参数应该存储的是一个对象,因此可以放入数据框、列表、向量等,但是对数据框进行列的提取应该不属于对对象的操作(不知道这么说对不对),因为function(a,b,c)里面的参数b c不等于对数据框命名时候的那个字符串,比如同样命名为b 和 c,对数据框而言b是一个值标签;但对R来说,b应该是一个对象(可以存储数据或者字符啥的)。
所以,我一般也就直接在自建函数里面直接规定一个向量,用数据框去$提取。(感觉特别地去用var1和var2命名来提取有点多此一举)
不过如果你记得变量的顺序比如a = var1,b = var2 ...,那就干脆把var1,var2设为列的值,变为df[,var1],df[,var2]这样应该也可行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-14 20:20:38
wuyi0614 发表于 2017-2-14 20:03
刚接触R一年多,也来讨论一下,这个话题有点意思;
自建函数的参数应该存储的是一个对象,因此可以放 ...
谢谢您的回复!!
“我一般也就直接在自建函数里面直接规定一个向量,用数据框去$提取”,这句我没有太理解,可以请您举个例子,怎么规定向量,用数据库$提取码?
谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-14 20:35:18
wuyi0614 发表于 2017-2-14 20:03
刚接触R一年多,也来讨论一下,这个话题有点意思;
自建函数的参数应该存储的是一个对象,因此可以放 ...
怎么把[]和$转换呢,比如我要求:df中列a等于3时对应的列b的值,用:
df$b[df$a==3] 可以运行,但是换成df[,b][df[,a]==3]就不行。
好像用[]索引的时候,列名要加引号,df[,"b"][df[,"a"]==3]就可以。
但是写函数的时候,加引号的参数应该是无法识别的,x <- function(data, var1, var2) {data[,"var1"]...}, 若运行x(df, a, b), 函数主体中的data[,"var1"],软件应该会识别成df[,"var1"], 而不会识别成df[,"a"]吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-14 20:54:15
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群