R 用户定义函数中的子集
我是编程界的新手,所以如果我问的是一个简单的问题,我会提前通知你。 因此,我需要创建一个UDF,它将根据数据帧中一个变量的级别从数据帧中生成子集R 用户定义函数中的子集,r,subset,user-defined-functions,R,Subset,User Defined Functions,我是编程界的新手,所以如果我问的是一个简单的问题,我会提前通知你。 因此,我需要创建一个UDF,它将根据数据帧中一个变量的级别从数据帧中生成子集 x<-c("a","b","c","a","b","c") y<-c(1,2,3,4,5,6) df<-data.frame(x,y) df 我的想法是,我可以将级别存储到向量、列表或字符中,因此我将获取每个级别并创建子集 listlvls <- lapply(df, function(x) levels(df$x))
x<-c("a","b","c","a","b","c")
y<-c(1,2,3,4,5,6)
df<-data.frame(x,y)
df
我的想法是,我可以将级别存储到向量、列表或字符中,因此我将获取每个级别并创建子集
listlvls <- lapply(df, function(x) levels(df$x)) # levels as a list
chrlvl<-levels(df$x) # levels as a character enumeration
dflvl<-data.frame(chrlvl) # levels as a dataframe`
我们可以使用
split
将data.frames的子集拆分为列表
lst1 <- split(df, df$x)
lst1我们可以使用split
将数据分解成一个列表
lst1 <- split(df, df$x)
lst1您可以做得更简单:
levels <- unique(as.character(df$x))
newDF <- list()
for(i in 1:length(levels))
{
newDF[[i]] <- subset(df,df$x==levels[i])
}
级别您可以做得更简单:
levels <- unique(as.character(df$x))
newDF <- list()
for(i in 1:length(levels))
{
newDF[[i]] <- subset(df,df$x==levels[i])
}
levels我们也可以使用dplyr中的group\u split
:
library(dplyr)
df %>% group_split(x)
我们还可以使用dplyr
中的group\u split
:
library(dplyr)
df %>% group_split(x)
如果要创建三个数据集,则不需要循环split(df,df$x)
。如果要创建三个数据集,则不需要循环split(df,df$x)
。