R从数据框创建多个2乘2表

时间:2014-11-29 20:36:34

标签: r

下一个问题 - 我在R

中创建了以下数据框
x <- as.integer(rnorm(n=1000, mean=10, sd=5))
y <- 1:1000
z <- sample (c(0,1),1000, replace=T)
df <- data.frame(x,y,z)

# create variables df using x

for(i in 1:10){
df[paste0("col",i)] <- ifelse(df$x <i, 1, 0)
}

# create 2 by 2 tables of z against col1 to col 10

for(i in 1:10){
table[i]  <- table (df[paste0("col",i)], df$z)
}

我已经收到一些很好的帮助,可以在数据框中使用for循环在R中创建变量。

但是我现在正在努力使用类似的for循环来创建一个二乘二的表(代码的最后一部分)。

有谁可以告诉我哪里出错?

一如既往地再次感谢!

1 个答案:

答案 0 :(得分:0)

有些不对劲。 table数据对象不存在,因此您无法索引分配给它。此外,您还需要在访问命名项时使用“[[”(否则您将获得一个子列表。)如果您为一系列表对象创建一个真正最合理的存储类型的列表,则需要使用“ [[“rahter than”[“。我也把它重新命名为tbl,这样就不会出现关于功能和数据的认知混淆。

 tbl<- list();for(i in 1:10){
 tbl[[i]]  <- table (df[[paste0("col",i)]], df$z) }

 tbl[[1]]

      0   1
  0 488 473
  1  16  23