在 R 语言中,DataFrame 是一种二维的数据结构,我们可以用它来以行和列的形式存储数据。我们可以使用 data.frame() 函数来创建 DataFrame。但是,当我们处理完一个 DataFrame 后,可能希望将其删除,以便释放内存或更高效地管理工作区。
创建演示用的 DataFrame
为了演示删除过程,让我们首先创建三个 DataFrame。
d1 = data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
print(d1)
print(d2)
print(d3)
输出
names address
1 sravan delhi
2 ojaswi hyd
names marks
1 sravan 98
2 ojaswi 90
names age
1 sravan 23
2 ojaswi 17
检查现有的 DataFrame
在删除 DataFrame 之前,我们需要先检查当前存在多少个 DataFrame 以及它们具体是什么。我们可以通过使用 ls() 函数来获取这些信息。该函数将返回当前环境中存在的所有变量。
d1 = data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
ls()
输出
[1] "d1" "d2" "d3"
方法 1:使用 rm() 方法
rm() 函数用于从 R 环境中删除变量或对象。我们可以使用这个函数来删除特定的 DataFrame。
语法:
> rm(dataframe)
其中 dataframe 是现有 dataframe 的名称。
示例: 创建三个 dataframe 并删除其中两个的 R 程序
d1= data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
# 删除所有 dataframe
rm(list = ls(all=TRUE)[sapply(mget(ls(all =TRUE)),
class) == "data.frame"])
ls()
输出
character(0)
我们还可以使用 rm() 函数删除多个 dataframe,只需用逗号分隔即可:
语法:
> rm("dataframe1","datafame2",……,"dataframe n")
d1 = data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
# 删除 dataframe1, dataframe2
rm("d1","d2")
ls()
输出
[1] "d3"
我们还可以使用 sapply() 删除所有 dataframe
如果我们想从工作区中删除所有的 DataFrame,我们可以结合使用INLINECODEf07f540d 函数和 INLINECODE8b8a2cf1。这种方法会从环境中删除所有属于 "data.frame" 类的对象。
语法:
> rm(list=ls(all=TRUE)[sapply(mget(ls(all=TRUE)), class) == "data.frame"])
d1= data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
# 删除所有 dataframe
rm(list=ls(all=TRUE)[sapply(mget(ls(all=TRUE)),
class) == "data.frame"])
ls()
输出
character(0)
方法 2:使用 grepl() 函数
另一种方法是使用 grepl() 函数,它允许我们根据模式匹配变量名。当我们想要删除所有符合特定模式名称的 DataFrame(例如,所有以 "data" 开头的 DataFrame)时,这非常有用。
语法:
> rm(list = ls()[grepl("pattern", ls())])
示例: 使用模式删除所有 DataFrame
如果我们想删除所有名称以 "data" 开头的 DataFrame,我们可以使用以下代码:
d1 = data.frame(names=c("sravan","ojaswi"),
address=c("delhi","hyd"))
d2 = data.frame(names=c("sravan","ojaswi"),
marks=c(98,90))
d3 = data.frame(names=c("sravan","ojaswi"),
age=c(23,17))
# 删除所有 dataframe
rm(list = ls()[grepl("data", ls())])
ls()
输出
[1] "d1" "d2" "d3"