我有一个数据框列表,我想创建一个字符向量,其中包含满足特定条件的数据框名称。在这种情况下,我想要包含至少 1 个观察值的数据框的名称。我需要在向量中使用这些名称,以便稍后在另一个函数中使用。
数据框列表由拆分功能自动创建。为了重现性,这里有一个数据框列表:
df1 <- data.frame(replicate(2,sample(0:1,5,rep=TRUE)))
df2 <- data.frame(replicate(2,sample(0:1,5,rep=TRUE)))
df3 <- data.frame(replicate(0,sample(0:1,5,rep=TRUE))) #empty
mylist <- list(df1, df2,df3) #create list of data frames
mylist2 <- mylist[sapply(mylist, function(x) dim(x)[1]) > 0] #subset list so that df's with no observations are dropped
Run Code Online (Sandbox Code Playgroud)
现在,我需要的是一个字符向量,其中包含 mylist2 中数据框的名称。(在本例中,“df1”和“df2”。)
谢谢!
如果您希望这在某种程度上自动化,例如您的环境中有大量 data.frames,您可能希望通过一行中的模式匹配来选择它们:
mylist = do.call("list", mget(grep("df", ls(), value=T)))
mylist2 <- mylist[sapply(mylist, function(x) dim(x)[1]) > 0]
Run Code Online (Sandbox Code Playgroud)
这将创建第一个列表,其中包含名称中包含“df”的所有 data.frame,同时将其名称保留为列表元素的属性。
然后我将过滤器应用于 1 元素 data.frames,您只需检索名称:
names(mylist2)
#### [1] "df1" "df2"
Run Code Online (Sandbox Code Playgroud)