R语言 创建、列出和删除内存中的对象

R语言 创建、列出和删除内存中的对象

关于R的一个最有趣的事实是,在R中被称为对象的东西,在许多其他编程语言中被称为变量。根据不同的环境,对象和变量可以有截然不同的含义。在每一种计算机语言中,变量提供了一种访问存储在内存中的数据的方法。R语言不提供对计算机内存的直接访问,而是提供一些专门的数据结构,我们将其称为对象。这些对象是通过符号或变量提及的。然而,在R语言中,符号本身就是对象,可以以与其他对象相同的方式进行操作。这与许多其他语言不同,并具有广泛的影响。R语言中的所有实体都可以被称为对象。它们可以是数组、数字、字符串、列表、向量、数据帧等等。

在内存中创建对象

为了在R中做有用和有趣的事情,人们需要给对象赋值。要在R中创建一个对象,需要给它一个名字,后面跟着赋值运算符 <- **(也可以用等号, **= ),以及他想给它的值。

x <- 5
R

**<- **是赋值运算符。它将右边的值分配给左边的对象。因此,在执行 **x <- 5 **之后,x的值是5,这个箭头可以被理解为5进入x。

对象的命名规则

  • 对象可以被赋予任何名称,如x,personName,或subject_id。
  • 对象的名字要明确,不要太长。
  • 对象名称不能以数字开头(2x是无效的,但x2是)。
  • R是区分大小写的(例如,subject_id与Subject_id不同)。
  • 有一些名字不能使用,因为它们是R中基本函数的名称(例如,if、else、for,完整列表见R中的保留字)。
  • 一般来说,即使允许使用,最好也不要使用其他的函数名称(例如,c、T、mean、data、df、weights等)。
  • 也最好避免在变量名称中使用点(.),如my.dataframe。由于历史原因,R中的许多函数名称中都有点,但由于点在R(用于方法)和其他编程语言中具有特殊含义,最好避免使用。
  • 另外,建议在变量名中使用名词,在函数名中使用动词。
  • 一个人的代码风格要一致(在哪里放空格,如何命名变量,等等)。使用一致的编码风格可以使一个人的代码对他未来的自己和他的合作者来说读起来更清晰。

例子

# R program to illustrate
# Creating an object in memory
   
# Numerical object
x = 5
print(x)
   
# String object
name = "Amiya"
print(name)
   
# Vector object
vec1 = c(1, 2, 3)
print(vec1)
  
vec2 = c("A", "B", "C")
print(vec2)
   
# List object
listOfNumber = list(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(listOfNumber)
   
# Data frame object
myDataFrame = data.frame(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(myDataFrame)
R

输出

[1] 5
[1] "Amiya"
[1] 1 2 3
[1] "A" "B" "C"
Numbers
[1] 1 2 3Characters
[1] "A" "B" "C"

  Numbers Characters
1       1          A
2       2          B
3       3          C
R

列出内存中的对象

人们可以通过使用 objects()ls() 函数来列出工作目录中的所有对象。 objects()ls() 函数可以用来获取环境中所有对象名称的字符串矢量。

例子

# R program to illustrate
# Listing objects in memory
   
# Numerical object
x = 5
print(x)
   
# String object
name = "Amiya"
print(name)
   
# Vector object
vec1 = c(1, 2, 3)
print(vec1)
  
vec2 = c("A", "B", "C")
print(vec2)
   
# List object
listOfNumber = list(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(listOfNumber)
   
# Data frame object
myDataFrame = data.frame(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(myDataFrame)
   
# Listing objects using object()
cat("Using object()\n")
print(objects())
   
# Listing objects using ls()
cat("Using ls()\n")
print(ls())
R

输出

[1] 5
[1] "Amiya"
[1] 1 2 3
[1] "A" "B" "C"
Numbers
[1] 1 2 3Characters
[1] "A" "B" "C"

  Numbers Characters
1       1          A
2       2          B
3       3          C

Using object()
[1] "listOfNumber" "myDataFrame"  "name"         "vec1"         "vec2"        
[6] "x"           
Using ls()
[1] "listOfNumber" "myDataFrame"  "name"         "vec1"         "vec2"        
[6] "x"           
R

人们可能注意到,objects()或ls()函数以排序的方式返回结果。

列出满足特定模式的对象

在R中,也可以列出指定特定正则表达式的对象。

例子

# R program to illustrate
# Listing objects in memory
   
# Numerical object
x = 5
print(x)
   
# String object
name = "Amiya"
print(name)
   
# Vector object
vec1 = c(1, 2, 3)
print(vec1)
  
vec2 = c("A", "B", "C")
print(vec2)
   
# List object
listOfNumber = list(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(listOfNumber)
   
# Data frame object
myDataFrame = data.frame(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(myDataFrame)
   
# The code below returns all objects
# whose name contains an v
print(ls(pattern = "v"))
   
# The code below returns all objects
# whose name ends with "e"
print(ls(pattern = "e$"))
R

输出

[1] 5
[1] "Amiya"
[1] 1 2 3
[1] "A" "B" "C"
Numbers
[1] 1 2 3Characters
[1] "A" "B" "C"

  Numbers Characters
1       1          A
2       2          B
3       3          C

[1] "vec1" "vec2"
[1] "myDataFrame" "name"  
R

删除内存中的对象

人们可以通过使用 rm()remove( )函数来删除工作目录中的对象。 rm()remove( )函数可以用来释放内存和清除环境空间。

例子

# R program to illustrate
# Deleting objects in memory
  
# Numerical object
x = 5
print(x)
  
# String object
name = "Amiya"
print(name)
  
# Vector object
vec1 = c(1, 2, 3)
print(vec1)
  
vec2 = c("A", "B", "C")
print(vec2)
  
# List object
listOfNumber = list(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(listOfNumber)
  
# Data frame object
myDataFrame = data.frame(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(myDataFrame)
  
# Deleting object x using rm()
rm(x)
  
# Deleting object myDataFrame using remove()
remove(myDataFrame)
  
cat("After deleted following objects listing of the object:\n")
print(ls())
R

输出

[1] 5
[1] "Amiya"
[1] 1 2 3
[1] "A" "B" "C"
Numbers
[1] 1 2 3Characters
[1] "A" "B" "C"

  Numbers Characters
1       1          A
2       2          B
3       3          C

After deleted following objects listing of the object:
[1] "listOfNumber" "name"         "vec1"         "vec2"  
R

删除内存中的所有对象

我们也可以通过向函数 rm()remove( )传递一个参数 list = ls() 来删除内存中的所有对象。

例子

# R program to illustrate
# Deleting objects in memory
  
# Numerical object
x = 5
print(x)
  
# String object
name = "Amiya"
print(name)
  
# Vector object
vec1 = c(1, 2, 3)
print(vec1)
  
vec2 = c("A", "B", "C")
print(vec2)
  
# List object
listOfNumber = list(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(listOfNumber)
  
# Data frame object
myDataFrame = data.frame(
    "Numbers" = vec1,
    "Characters" = vec2
)
print(myDataFrame)
  
# Deleting all objects using rm()
rm(list = ls())
  
cat("After deleted all objects listing of the object:\n")
print(ls())
R

输出

[1] 5
[1] "Amiya"
[1] 1 2 3
[1] "A" "B" "C"
Numbers
[1] 1 2 3Characters
[1] "A" "B" "C"

  Numbers Characters
1       1          A
2       2          B
3       3          C

After deleted all objects listing of the object:
character(0)
R

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册