楼主: dxystata
2528 6

[问答] 为什么这里yvar不是can呢? [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-2

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

楼主
dxystata 发表于 2013-7-7 15:58:54 |AI写论文
50论坛币
  1. can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11),
  2.          rep(0, times = 38))
  3. smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166),
  4.          rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18),
  5.          rep(0, times = 20))
  6. alc <- c(rep(1, times = 409), rep(0, times = 49))
  7. dat <- as.data.frame(cbind(alc, smk, can))

  8. aaa<-function(yvar,data) {
  9.   bbb2 <- data.frame(ftable(xtabs(~ smk + alc + yvar,data=data)))
  10.   print(bbb2)
  11.   print(str(bbb2))
  12. }
  13. aaa(yvar=can,data=dat)
复制代码


  smk alc yvar Freq
1   0   0    0   20
2   1   0    0   18
3   0   1    0   12
4   1   1    0  166
5   0   0    1    3
6   1   0    1    8
7   0   1    1    6
8   1   1    1  225
'data.frame':        8 obs. of  4 variables:
$ smk : Factor w/ 2 levels "0","1": 1 2 1 2 1 2 1 2
$ alc : Factor w/ 2 levels "0","1": 1 1 2 2 1 1 2 2
$ yvar: Factor w/ 2 levels "0","1": 1 1 1 1 2 2 2 2
$ Freq: num  20 18 12 166 3 8 6 225
NULL

为什么这里yvar不是can呢?谢谢!

最佳答案

410234198 查看完整内容

传递的是值而不是标签吧。
关键词:VaR function

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161

沙发
410234198 发表于 2013-7-7 15:58:55
dxystata 发表于 2013-7-9 15:47
自定义函数中,生成的列联表是
xtabs(~smk + alc + yvar,data=data) #smk和alc是确定值,yvar是变量、dat ...
传递的是值而不是标签吧。

藤椅
410234198 发表于 2013-7-9 15:35:42
自定义函数中,生成的列联表是
xtabs(~smk + alc + yvar,data=data) #smk和alc是确定值,yvar是变量、data是变量。
aaa(yvar=can,data=dat) #这个是给两个变量赋值
所以结果是生成的列联表中必然是yvar,而不是can

板凳
dxystata 发表于 2013-7-9 15:47:15
410234198 发表于 2013-7-9 15:35
自定义函数中,生成的列联表是
xtabs(~smk + alc + yvar,data=data) #smk和alc是确定值,yvar是变量、data是 ...
自定义函数中,生成的列联表是
xtabs(~smk + alc + yvar,data=data) #smk和alc是确定值,yvar是变量、data是变量。
aaa(yvar=can,data=dat) #这个是给两个变量赋值
所以结果是生成的列联表中必然是yvar,而不是can

yvar传递的是can,应该是can啊

报纸
410234198 发表于 2013-7-9 15:55:04
dxystata 发表于 2013-7-9 15:47
自定义函数中,生成的列联表是
xtabs(~smk + alc + yvar,data=data) #smk和alc是确定值,yvar是变量、dat ...
一个简单的例子。
>a=rep(1,7)
>b=rep(2,7)
>d<-function(x,y){cbind(x,y)}
>d(a,b)
#结果是
      x y
[1,] 1 2
[2,] 1 2
[3,] 1 2
[4,] 1 2
[5,] 1 2
[6,] 1 2
[7,] 1 2

a,b只是d函数的两个参数值而已,这两个参数已经命名了x,y了。
如果
>d<-function(x,y){cbind(a=x,y)}
>d(a,b)
     a y
[1,] 1 2
[2,] 1 2
[3,] 1 2
[4,] 1 2
[5,] 1 2
[6,] 1 2
[7,] 1 2

地板
dxystata 发表于 2013-7-9 16:00:52
如何修改函数中的内容,使其显示can呢?

7
410234198 发表于 2013-7-9 16:13:53
dxystata 发表于 2013-7-9 16:00
如何修改函数中的内容,使其显示can呢?
个人观点。
直接修改函数function(can,data){}
或者fuction(yvar,data){
can=yvar
bbb2 <- data.frame(ftable(xtabs(~ smk + alc + can,data=data)))}
别的还没想起来。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 06:42