如何在R中创建具有动态列长度的数据帧

问题描述 投票:0回答:1

我正在R中创建数据帧,如下所示。

len5<-data.frame("C1"=character(0),"C2"=character(0),"C3"=character(0),"C4"=character(0),"C5"=character(0), stringsAsFactors=FALSE)

len6<-data.frame("C1"=character(0),"C2"=character(0),"C3"=character(0),"C4"=character(0),"C5"=character(0),"C6"=character(0),stringsAsFactors=FALSE)

len7<-data.frame("C1"=character(0),"C2"=character(0),"C3"=character(0),"C4"=character(0),"C5"=character(0),"C6"=character(0),"C7"=character(0),stringsAsFactors=FALSE)

等等

但是,对于从5到15的列长度的数据帧,我需要在从长度5到15开始的循环中动态创建它。

有没有办法做到这一点?所有数据帧都只是字符

谢谢Tanmay

r dataframe
1个回答
1
投票

我们可以用lapply来创建listdata.frames。最好将其保留在list中,而不是在全局环境中创建多个对象。

i1 <- 5:15
lst <- lapply(i1, function(x)  data.frame(setNames(replicate(x,character(0)), 
                           paste0("C", seq_len(x))), stringsAsFactors = FALSE))
names(lst) <- paste0("len", i1)

如果程序需要从全局环境中获取对象

list2env(lst, .GlobalEnv)
str(len5)
#'data.frame':   0 obs. of  5 variables:
# $ C1: chr 
# $ C2: chr 
# $ C3: chr 
# $ C4: chr 
# $ C5: chr 
© www.soinside.com 2019 - 2024. All rights reserved.