R语言如何修复:$ operator is invalid for atomic vectors

R语言如何修复:$ operator is invalid for atomic vectors

在这篇文章中,我们将看到如何在R编程语言中解决$运算符对原子向量无效的问题。

在R语言中可能面临的错误是。

$ operator is invalid for atomic vectors

当我们试图通过使用$运算符获得原子向量的一个元素时,R编译器会产生这样的错误。原子向量是一个简单的一维对象,包含了在c()和vector()函数帮助下创建的数据。R不允许我们使用$符号访问原子向量的元素。但我们可以使用双括号,即[[]]getElement()函数来访问它们。

什么时候可能发生这种错误

让我们考虑一个例子,我们有一个数字向量 vect, 初始化为前五个自然数。使用R中的names()函数为每个数字分配一个名称。names()函数的语法如下。

语法: names(vect) <- value

参数

  • vect:一个对象,即向量、矩阵、数据框等。
  • value。要分配的相应名称
# Define a vector
vect <- c(1, 2, 3, 4, 5)
  
# Set integers names
names(vect) <- c('first', 'second', 'third',
                 'fourth', 'fifth')
  
# Display the vector
vect

输出

R语言如何修复:$ operator is invalid for atomic vectors

现在让我们试着用语句访问第三元素, vect$third

# Define a vector
vect <- c(1, 2, 3, 4, 5)
  
# Set integers names
names(vect) <- c('first', 'second', 'third',
                 'fourth', 'fifth')
  
# Display the vector
vect$third

输出

R语言如何修复:$ operator is invalid for atomic vectors

R编译器会产生一个错误,因为我们不允许以这种方式访问原子向量中的元素。为了检查该向量是否真的是一个原子向量,我们可以使用R语言中的is.atomic()函数,该函数的语法如下。

语法: is.atomic(vect)

参数

vect。这里,vect代表一个向量

返回类型

  • TRUE:如果vect是一个原子向量
  • FALSE: 如果vect不是一个原子向量

如何解决这个错误

有三种方法,我们可以修复这个错误。

方法1:使用双括号访问元素

我们可以在双括号的帮助下轻松访问原子向量的元素,即[[]]。

# Define a vector
vect <- c(1, 2, 3, 4, 5)
  
# Set integers names
names(vect) <- c('first', 'second', 'third', 
                 'fourth', 'fifth')
  
# Display the third element of the 
# vector
vect[['third']]

输出

R语言如何修复:$ operator is invalid for atomic vectors

方法 2:使用getElement()函数访问元素

另一种方法是使用getElement()函数来访问原子向量的元素。该函数的语法如下。

语法: getElement(vect, specifier)

参数

  • vect。它代表一个向量
  • specifier。它代表我们要访问的元素的名称

返回类型

  • 返回一个标有指定元素的元素
# Define a vector
vect <- c(1, 2, 3, 4, 5)
  
# Set integers names
names(vect) <- c('first', 'second', 'third', 
                 'fourth', 'fifth')
  
# Display the third element of 
# the vector
getElement(vect, 'third')

输出

R语言如何修复:$ operator is invalid for atomic vectors

方法3:通过将向量转换为数据框架,然后使用$运算符来访问元素

另一种方法是首先将向量转换为数据框,然后应用$运算符。我们可以使用as.data.frame()函数将向量转换为数据框。这个函数的语法如下。

语法: as.data.frame(object)

参数

  • object代表一个向量或矩阵

返回类型

  • 返回一个向量
# Define a vector
vect <- c(1, 2, 3, 4, 5)
  
# Set integers names
names(vect) <- c('first', 'second', 'third', 
                 'fourth', 'fifth')
  
# Transform the vector to data frame
dataframe <- as.data.frame(t(vect))
  
# Access the third element
dataframe$third

输出

R语言如何修复:$ operator is invalid for atomic vectors

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程