R语言中$和@各自的作用是什么

问答R语言中$和@各自的作用是什么
王利头 管理员 asked 2 年 ago
3 个回答
Mark Owen 管理员 answered 2 年 ago

R语言中的$和@符号是两种非常重要的运算符,用于提取和处理数据。虽然它们都与对象属性有关,但它们的作用却截然不同。

$符号

$符号用于从一个对象中提取一个属性。它可以应用于任何对象,包括数据帧、列表和向量。例如:

“`r

df$age

my_list$name

myvector$firstelement
“`

$符号总是返回一个单一的值。如果一个对象中不存在指定的属性,则会返回NA(缺失值)。

@符号

@符号用于从一个对象中提取一个元数据。它只适用于S3类对象,即具有特定的属性和方法的对象。S3类对象通常由R包创建。

元数据是附加到对象的信息,可以提供有关对象结构、作者或来源等信息。与$符号类似,@符号后面跟属性名称:

“`r

my_object@meta
“`

@符号返回一个列表,其中包含有关对象元数据的各种信息。

什么时候使用$符号?

  • 当需要从一个对象中提取一个属性时。
  • 当对象不是一个S3类对象时。
  • 当需要一个单一的值时。

什么时候使用@符号?

  • 当需要从一个S3类对象中提取元数据时。
  • 当需要一个有关对象结构或来源的信息时。
  • 当需要一个包含多个值的信息时。

示例

为了进一步说明$和@符号之间的区别,我们来看一个示例。假设我们有一个代表客户信息的S3类对象:

r
customer <- new("customer", name = "John Doe", age = 30)

要从这个对象中提取客户的姓名,我们使用$符号:

r
customer$name

而要获取客户的元数据,我们使用@符号:

r
customer@meta

元数据列表将包含有关客户对象的信息,如类、作者和文档。

总结

$符号和@符号在R中扮演着不同的角色。$符号用于从对象中提取属性,而@符号用于从S3类对象中提取元数据。了解它们的用法对于有效地处理和操作R中的数据至关重要。

seoer788 管理员 answered 2 年 ago

作为一名数据科学家,我经常使用 R 语言进行数据分析和可视化。其中,$ 和 @ 是两个经常用到的符号,它们的作用各不相同。

$:对象取值符

$ 符号在 R 中用作对象取值符。它允许我们从对象中提取特定的元素或属性。例如:

r
my_list <- list("name" = "John", "age" = 30)
my_list$name # 输出:"John"
my_list$age # 输出:30

$ 符号还可以用于从数据框中提取特定列。例如:

r
my_data <- data.frame(name = c("John", "Mary"), age = c(30, 25))
my_data$name # 输出:c("John", "Mary")
my_data$age # 输出:c(30, 25)

@:方法调用符

@ 符号在 R 中用作方法调用符。它允许我们调用对象的特定方法。例如:

r
my_vector <- c(1, 2, 3)
sum(my_vector) # 输出:6
mean(my_vector) # 输出:2

在这些示例中,sum() 和 mean() 是 R 中内置的函数,而 @ 符号将它们应用于 my_vector 对象。

S3 和 S4 类中的 $ 和 @

在 R 中,对象属于 S3 或 S4 类。$ 和 @ 符号在这些类中具有不同的作用:

  • S3 类: $ 符号用于提取对象中的槽(slot),而 @ 符号一般不使用。
  • S4 类: $ 符号用于提取对象中的私有成员变量,而 @ 符号用于调用对象的方法。

其他用途

除了上述基本用途外,$ 和 @ 符号在 R 中还有其他一些用途:

  • $: 可用于创建新的对象属性,例如:

r
my_object$new_attribute <- "value"

  • @: 可用于创建新的方法,例如:

r
my_object@new_method <- function() {
# 方法实现
}

总结

R 语言中,$ 符号用作对象取值符,用于提取对象的元素或属性。@ 符号用作方法调用符,用于调用对象的特定方法。在 S3 和 S4 类中,$ 和 @ 符号有不同的作用,分别用于提取槽和调用方法。此外,它们还有其他一些用途,如创建新属性和方法。了解 $ 和 @ 符号的用途对于有效使用 R 语言至关重要。

ismydata 管理员 answered 2 年 ago

在R语言中,$和@是两个不同的运算符,有着截然不同的作用。

$(美元符号)

$运算符用于从对象中提取元素。它可以通过两种方式使用:

  • 从列表中提取元素:例如,假设我们有一个名为”my_list”的列表,其中包含以下元素:


my_list <- list(name = "John Doe", age = 30, city = "New York")

要提取”name”元素,我们可以使用以下语法:


my_list$name

这将返回字符串”John Doe”。

  • 数据框中提取列:$运算符也可以用于从数据框中提取列。例如,假设我们有一个名为”my_data”的数据框,其中包含以下列:


my_data <- data.frame(name = c("John Doe", "Jane Smith"), age = c(30, 25), city = c("New York", "London"))

要提取”name”列,我们可以使用以下语法:


my_data$name

这将返回一个包含两个元素的向量,即”John Doe”和”Jane Smith”。

@(at符号)

@运算符用于附加元数据到对象。它可以通过两种方式使用:

  • 将属性附加到对象:例如,假设我们有一个名为”my_vector”的向量,其中包含以下元素:


my_vector <- c(1, 2, 3, 4, 5)

要附加一个名为”mean”的属性,其中包含向量的平均值,我们可以使用以下语法:


attributes(my_vector)$mean <- mean(my_vector)

  • 将元数据附加到列表或数据框:@运算符也可以用于将元数据附加到列表或数据框。例如,假设我们有一个名为”my_list”的列表,其中包含以下元素:


my_list <- list(name = "John Doe", age = 30, city = "New York")

要附加一个名为”metadata”的元数据,其中包含有关列表的额外信息,我们可以使用以下语法:


my_list@metadata <- list(created_at = "2023-02-17")

现在,我们可以使用以下语法访问元数据:


my_list@metadata$created_at

这将返回字符串”2023-02-17″。

总结

  • $运算符用于从列表或数据框中提取元素。
  • @运算符用于附加元数据到对象(例如属性、列表或数据框)。

了解$和@运算符的不同作用对于有效地使用R语言进行数据操作至关重要。

公众号