数据框中变量制表的循环

loop for tabulation of variables in data frame

我有一个 dfn 个变量。 我想遍历变量的一个子集并产生一个频率 table.

例如,下面 df

id a b c d 
1 0 1 0 1 
2 1 0 1 0
3 0 1 0 1

我尝试执行以下操作但没有成功:

varlist <- c("a", "c")

for (i in varlist){
   print(table(df$i))
               }

(首先,你的矩阵df被转换为一个数据框:)

df <- setNames(as.data.frame(df), letters[1:4])

$ 不适用于变量。您必须改用 [[

for (i in varlist){
  print(table(df[[i]]))
}

但是,对于您的问题更简单的解决方案是 lapply:

lapply(df[varlist], table)

来自Extract的帮助页面:

The main difference is that $ does not allow computed indices, whereas [[ does.