楼主: dxystata
2620 22

[问答] R中写函数遇到的问题 [推广有奖]

版主

大师

35%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
181863 个
通用积分
15209.3518
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
292217 点
帖子
5395
精华
1
在线时间
13500 小时
注册时间
2006-6-21
最后登录
2024-5-12

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

50论坛币
function (yvars=case, xvars=age sex x1 x2) {

}
能否这样实现?或有没更好的办法,谢谢!

最佳答案

关键词:function vars Case ARS VaR 谢谢 function
沙发
ntsean 发表于 2013-4-12 13:02:46 |只看作者 |坛友微信交流群
dxystata 发表于 2013-4-15 10:08
谢谢!
如何将yvars xvars 传递到 glm(case~ age + sex + x1+x2, 呢, family = "binomial") 函数呢?
谢 ...
试试
yvar <- "case"
xvars <- "age sex x1 x2"

formula <- as.formula(paste(yvar, "~", paste(strsplit(xvars, " ")[[1]], collapse="+")))

glm(formula, family="binomial)

已有 1 人评分经验 学术水平 收起 理由
dxystata + 100 + 1 好的意见建议

总评分: 经验 + 100  学术水平 + 1   查看全部评分

使用道具

藤椅
水天一色DIY 在职认证  发表于 2013-4-12 16:03:05 |只看作者 |坛友微信交流群
不是很明白楼主遇到具体问题何在
(如果是针对"xvars=age sex x1 x2",好像没见过如此定义,为了统一定义xvars,为什么不采用
  1. xvars=data.frame(age,sex,x1,x2)
  2. myfun<-function(yvars,xvars){
  3. }
复制代码
)当然这是个人想法,望有助楼主
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 50 + 1 + 1 好的意见建议

总评分: 经验 + 50  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

板凳
求证1加1 发表于 2013-4-13 13:48:31 |只看作者 |坛友微信交流群
这样定义会报错的,lz不要受stata影响太深,,,针对lz这个函数,R中函数定义一般是这样的
fun<-function(yvars=缺省值,xvars=c("age的缺省值","sex的缺省值","以此类推")){
"函数主体"
}
或者也可以这样
fun<-function(yvars=缺省值,age="缺省值",sex="缺省值","以此类推")){
"函数主体"
}
最后ym一下stata版主,求多多指教
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 50 + 1 + 1 好的意见建议

总评分: 经验 + 50  学术水平 + 1  热心指数 + 1   查看全部评分

个人主页,欢迎订阅http://chenangliu.info/

使用道具

报纸
ntsean 发表于 2013-4-13 22:19:06 |只看作者 |坛友微信交流群
可以用formula object 比如

y <- rnorm(10)
x1 <- rnorm(10)
age <- 1:10
sex <- rep(0:1, each=5)

test <- function(formula) {
        model.frame(formula)
}

test(y~age)
test(y~age+sex)
test(y~x1+age+sex)
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 50 + 1 + 1 好的意见建议

总评分: 经验 + 50  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

地板
dxystata 发表于 2013-4-15 10:08:47 |只看作者 |坛友微信交流群
水天一色DIY 发表于 2013-4-12 16:03
不是很明白楼主遇到具体问题何在
(如果是针对"xvars=age sex x1 x2",好像没见过如此定义,为了统一定义xv ...
谢谢!
如何将yvars xvars 传递到 glm(case~ age + sex + x1+x2, 呢, family = "binomial") 函数呢?
谢谢!

使用道具

7
水天一色DIY 在职认证  发表于 2013-4-15 15:59:44 |只看作者 |坛友微信交流群
dxystata 发表于 2013-4-15 10:08
谢谢!
如何将yvars xvars 传递到 glm(case~ age + sex + x1+x2, 呢, family = "binomial") 函数呢?
谢 ...
不知道你的问题是否有解决,如果你是要定义两个函数,并实现参数传递,可以参考一下:
"<<-"

使用道具

8
dxystata 发表于 2013-4-15 17:07:23 |只看作者 |坛友微信交流群
水天一色DIY 发表于 2013-4-15 15:59
不知道你的问题是否有解决,如果你是要定义两个函数,并实现参数传递,可以参考一下:
"
可以举个例子吗?

使用道具

9
dxystata 发表于 2013-4-15 17:13:42 |只看作者 |坛友微信交流群
水天一色DIY 发表于 2013-4-15 15:59
不知道你的问题是否有解决,如果你是要定义两个函数,并实现参数传递,可以参考一下:
"
"<<-"
英文名称是什么? 谢谢!

使用道具

10
水天一色DIY 在职认证  发表于 2013-4-15 18:00:02 |只看作者 |坛友微信交流群
dxystata 发表于 2013-4-15 17:07
可以举个例子吗?
嗯,是这样子的,比如:
  1. xvar=0;yvar=0

  2. myfun1<-function(){
  3.    xvar<<-1;yvar<<-1
  4.                             }

  5. myfun2<-function(){
  6.     print(xvar);print(yvar)
  7.                                }
复制代码
这个例子说明(刚开始xvar和yvar变量值都是0,当运行了myfun1后,xvar和yvar变量赋予全局变量,及突破了只作用于function函数的限制,对于function外的xvar值有影响的【你可以把<<-改成<-比较】

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-12 12:46