基于R中包含变量名的对象的子集数据帧

基于R中包含变量名的对象的子集数据帧,r,dataframe,loops,for-loop,nested-loops,R,Dataframe,Loops,For Loop,Nested Loops,我有一个对象(var),它可能会更改,其中包含数据帧df的任何变量的名称。我正在尝试创建一个循环,它可以根据这个变量的值生成子集 df[df$var == "value", 3] for(l in levels(outcome){ for(i in names(df)){ list <- table(df[df$i == l, 3]) } } 但是,我想强调的是,变量名和值将在每个变量上循环,因此需要进行更改。编写函数可能会有所帮助: get

我有一个对象(
var
),它可能会更改,其中包含数据帧
df
的任何变量的名称。我正在尝试创建一个循环,它可以根据这个变量的值生成子集

df[df$var == "value", 3]
for(l in levels(outcome){
   for(i in names(df)){
      list <- table(df[df$i == l, 3])
   }
 }

但是,我想强调的是,变量名和值将在每个变量上循环,因此需要进行更改。

编写函数可能会有所帮助:

get_counts <- function(data, i, l) {
  table(data[data[[i]] == l, 3])
}

您可以使用
df[[i]]
。你能分享一下你的预期产出吗?我刚刚做了@Ronaksah:)
>table(df[df$outcome == 'married', 3])
black blonde  brown 
     2      1      0 
get_counts <- function(data, i, l) {
  table(data[data[[i]] == l, 3])
}
get_counts(df, 'outcome', 'married')

# black blonde  brown 
#     1      1      1