下一个问题 - 我在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循环来创建一个二乘二的表(代码的最后一部分)。
有谁可以告诉我哪里出错?
一如既往地再次感谢!
答案 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