R 基于作为字符向量传递的列名拆分数据帧
我有一个数据框R 基于作为字符向量传递的列名拆分数据帧,r,R,我有一个数据框 df=data.frame(v1=c('abc','xyz','abc','abc'),v2=c(400,300,400,300),v3=c(1,2,3,4)) df v1 v2 v3 abc 400 1 xyz 300 2 abc 400 3 abc 300 4 我想根据列v1和v2拆分此数据帧。我知道我可以用下面的命令来做 a_split=split(df,list(df$v1,df$v2)) 我得到的预期结果如下: > a_split[
df=data.frame(v1=c('abc','xyz','abc','abc'),v2=c(400,300,400,300),v3=c(1,2,3,4))
df
v1 v2 v3
abc 400 1
xyz 300 2
abc 400 3
abc 300 4
我想根据列v1和v2拆分此数据帧。我知道我可以用下面的命令来做
a_split=split(df,list(df$v1,df$v2))
我得到的预期结果如下:
> a_split[1]
$abc.300
v1 v2 v3
4 abc 300 4
> a_split[2]
$xyz.300
v1 v2 v3
2 xyz 300 2
> a_split[3]
$abc.400
v1 v2 v3
1 abc 400 1
3 abc 400 3
这里的问题是,需要拆分数据的变量列表将作为字符向量由用户传递。所以会是这样的
var_name=c("v1","v2")
现在如果我试图直接使用这个向量,我不会得到想要的结果
a_split=split(df,list(var_name))
是否有人可以建议如何基于字符向量列表执行拆分您可以将其包装在函数中;其中,对于任何数据帧,变量为
df
,对于要选择的列,变量为col\u选项
f <- function(df, col_choices = NULL){
if(is.data.frame(df) && !is.null(col_choices)){
split(df, col_choices)
}
}
data.frame
s是list
s,所以split(df,df[c(“v1”,“v2”)))
或split(df,df[var_name])
很好。。。谢谢
> f(df = df, col_choices = c('v2', 'v3'))
$v2
v1 v2 v3
1 abc 400 1
3 abc 400 3
$v3
v1 v2 v3
2 xyz 300 2
4 abc 300 4