【发布时间】:2021-03-06 00:59:01
【问题描述】:
我正在尝试从数据框列表(每个 df 包含超过 2 列)中创建一个 2x2 表。但是,尝试使用 for 循环执行此操作时,我有点卡住了。下面是一些示例数据:
df1 <- data.frame(a = c(0, 1, 0, 1, 0, 1, 1, 1, 0, 1),
b = c("Pos", "Neg", "Pos", "Pos", "Neg",
"Pos", "Neg", "Pos", "Pos", "Neg"),
c = c("Y", "N", "Y", "Y", "Y", "N", "N", "Y", "N", "Y"))
df2 <- data.frame(a = c(0, 1, 0, 1, 0, 1, 1, 1, 0, 1),
b = c("Pos", "Neg", "Pos", "Pos", "Neg",
"Pos", "Neg", "Pos", "Pos", "Neg"),
c = c("Y", "N", "Y", "Y", "Y", "N", "N", "Y", "N", "Y"))
df3 <- data.frame(a = c(0, 1, 0, 1, 0, 1, 1, 1, 0, 1),
b = c("Pos", "Neg", "Pos", "Pos", "Neg",
"Pos", "Neg", "Pos", "Pos", "Neg"),
c = c("Y", "N", "Y", "Y", "Y", "N", "N", "Y", "N", "Y"))
df_list <- list(df1,df2,df3)
上面的示例显示了 3 个完全相同的数据帧(因此在这种情况下,输出应该是 3 个具有相同值的表)。我想为每个数据框创建一个包含“b”和“c”列的表。我试图通过一个 for 循环来做到这一点(见下文)
for(i in 1:length(df_list)){
table[[i]] <- table(df_list[[i]][2], df_list[[i]][3])
}
但是,这似乎不起作用。有什么想法吗?
谢谢!
【问题讨论】:
-
您的预期输出是什么?你需要
lapply(df_list, function(x) table(x[[2]], x[[3]]))吗? -
是的,就是这样!谢谢!