data frame
来自用户提供的列向量的子集以及每个列中的值列表。
示例数据帧:
df <- data.frame(var1 = rep(1:3, each = 5),
var2 = rep(4:6, each = 5),
var3 = rep(7:9, each = 5))
要子集的列向量:
cols.df <- c(1,2,3)
每个列中的值列表,其子集为:
rows.df <- list(c(1:3), c(4:6), c(7:9))
函数以迭代方式创建子集列表:
subsetfcn <- function(data, cols, rowslist){
df <- data
listofdfs <- list() # create data.frame to contain subsets
for(a in cols){
for(rows in rowslist) {
for(row in rows) {
df <- df[df[ , a]==row, ]
listofdfs[[row]] <- df
}
}
}
return(listofdfs)
}
results <- subsetfcn(df, cols.df, rows.df)
预期输出如下:
> df[df[ , 1]==1, ]
var1 var2 var3
1 1 4 7
2 1 4 7
3 1 4 7
4 1 4 7
5 1 4 7
> df[df[ , 1]==2, ]
var1 var2 var3
6 2 5 8
7 2 5 8
8 2 5 8
9 2 5 8
10 2 5 8
> df[df[ , 1]==3, ]
var1 var2 var3
11 3 6 9
12 3 6 9
13 3 6 9
14 3 6 9
15 3 6 9
>
> df[df[ , 2]==4, ]
var1 var2 var3
1 1 4 7
2 1 4 7
3 1 4 7
4 1 4 7
5 1 4 7
> df[df[ , 2]==5, ]
var1 var2 var3
6 2 5 8
7 2 5 8
8 2 5 8
9 2 5 8
10 2 5 8
> df[df[ , 2]==6, ]
var1 var2 var3
11 3 6 9
12 3 6 9
13 3 6 9
14 3 6 9
15 3 6 9
到目前为止,函数返回一个包含9个数据帧的列表,但每个帧都没有行。我不知道为什么没有传递正确的值
a
和
row