2017-01-25 39 views
0

我有一个dfn变量。 我想遍历变量的一个子集并产生一个频率表。循环用于制表数据帧中的变量

例如,给出以下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)) 
       } 
+2

'lapply(dat [varliat],table)' – user20650

+0

'table(df [varlist])''? – Uwe

+0

@UweBlock;这将给出不止一个维度的应急表格。看起来好像需要单变量表 – user20650

回答

2

(首先,你的矩阵df转化为数据帧:)

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

$没有与变量一起工作。你必须使用[[代替:

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

但是,对于您的问题更容易解决方案是lapply

lapply(df[varlist], table) 

Extract帮助页面:

的主要区别在于$不允许计算指标,而[[呢。

+0

谢谢你的帮助! – kquach

+0

Sven,作为一个附录,你能解释为什么$不能和变量一起工作,而用[[]]来代替?谢谢! – kquach

+0

@kquach我在答案中加了一个引号。 –