首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在r中制作列表上的列联表

如何在r中制作列表上的列联表
EN

Stack Overflow用户
提问于 2018-04-28 08:07:43
回答 2查看 527关注 0票数 0

主要的曝光变量是aff。我想要获得affvarlist中所有变量的联想表。然后我想用这些列联表做卡方检验。我的代码如下:

代码语言:javascript
复制
name=names(data)
varlist=name[11:40]
models=lapply(varlist, function(x) {
          chisq.test(table(substitute(data$i,list(i = as.name(x))),data$aff))
 })
lapply(models, summary)

但我弄错了

代码语言:javascript
复制
Error in unique.default(x, nmax = nmax) : 
  unique() applies only to vectors

如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2018-04-28 08:34:58

我认为你使用substitute之类的东西把事情搞得过于复杂了。如果没有您的数据,我将尝试使用mtcars,使用cyl作为暴露变量。

代码语言:javascript
复制
data <- mtcars
name <- names(data)
ev <- "cyl"
varlist <- name[ name != ev ]
models <- lapply(varlist, function(nm) {
  chisq.test(table(data[[nm]], data[[ev]]))
})
# Warning messages:
# 1: In chisq.test(table(data[[nm]], data[[ev]])) :
#   Chi-squared approximation may be incorrect

(因为我在测试中使用了一个糟糕的示例,所以这里有很多警告;在使用mtcars时可以忽略这一点,因为对于这个测试来说,它确实不是一个好的数据集。)

代码语言:javascript
复制
summaries <- lapply(models, summary)
str(summaries[1:2])
# List of 2
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"
票数 1
EN

Stack Overflow用户

发布于 2018-04-28 09:47:08

假设您的数据类似于mtcars,其中vsamgearcarb是分类变量,您可以创建如下函数:

代码语言:javascript
复制
df_list_f <- function(x) chisq.test(table(df2$cyl, x))
df2 <- mtcars[,8:11] # df2 contains the columns vs, am, gear and carb
lapply(df2, df_list_f)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50071625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档