我在数据框中循环遍历列名,我需要在每次迭代时使用这些名称对数据进行子集化。我知道alias "docker-destroy"="echo 'test' && docker rm"
可以替换为DATA$column
when looping through column names,但我如何使用此格式进行分组?
示例:
DATA[[column]]
答案 0 :(得分:3)
使用列的名称为数据框的列编制索引可以由Dataframe[[columnname]]
完成。所以你可以这样做:
my.mean <- function(a, b) mean(DATA[DATA[[b]]==1,a])
outer(names(labs), names(labs), FUN = Vectorize(my.mean))
你在对角线上得到1分。
答案 1 :(得分:1)
由于subset
有select
参数,我们可以使用该参数传递a
。 subset
的输出始终为data.frame
,因为它有drop=FALSE
作为默认参数。但是,mean
适用于vector
或matrix
。因此,请通过提取第一列data.frame
vector
转换为[[1]]
for (a in names(labs)) {
for (b in names(labs)){
if (a != b) {
print( mean(subset(DATA, b == 1, select = a)[[1]]) )
}
}
}