找回密码
 立即注册
查看: 4196|回复: 5

自定义函数传参数问题

[复制链接]
发表于 2014-10-17 17:45:42 | 显示全部楼层 |阅读模式
请教大牛们:          x     y
问题:数据框 a 为  1     1
                              2     2
                              3     2
                              4     3

我想取出数据框 a 中y=2的x 的值,可以用subset函数:subset(a,y==2 )$x  ,得到2,3 。

但是 我想用自定义函数  :gets<- function(mydata,name,sort){
                                                        return(subset(mydata,y==sort)$name)}

然后调用自定义的函数:gets(a,x,2)   但是得到的结果却是NULL。

想问一下为什么会这样?
谢谢!



回复

使用道具 举报

发表于 2014-10-18 09:55:21 | 显示全部楼层
x是object, 不是字符.
回复

使用道具 举报

发表于 2014-10-18 10:06:00 | 显示全部楼层
> gets<- function(mydata,name,sort){return(subset(mydata, y==sort)[, eval(name)])}
> gets(a, "x", 2)
[1] 2 3
回复

使用道具 举报

 楼主| 发表于 2014-10-20 15:47:06 | 显示全部楼层
谢谢!追问:在自定义函数中,传入数据框列名参数,只能用“[  ]”,不能用“$” 定位到该列吗?
回复

使用道具 举报

发表于 2014-10-20 22:00:39 | 显示全部楼层
用“$” 定位到该列是可以的, 但用传入参数不可以。
回复

使用道具 举报

 楼主| 发表于 2014-10-21 13:40:38 | 显示全部楼层
哦!知道了!非常感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 15:33 , Processed in 0.029044 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表