R语言如何修复:object of type closure is not subsettable

R语言如何修复:object of type closure is not subsettable

在这篇文章中,我们将讨论如何在R编程语言中修复”‘closure’类型的对象不是子集表 “的错误。

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

object of type 'closure' is not subsettable

当我们试图对一个函数进行子集时,R编译器会产生这样一个错误。在R语言中,我们可以对列表、向量等进行子集,但对具有 “闭合 “类型的函数则不能进行子集。

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

考虑到我们在R中的一个函数将一个向量的每个元素作为输入并与10相加。

# Define a function
Add <- function(x) {
  x <- x + 10
  return(x)
}

让我们添加一些可以调用这个函数的菜单驱动代码。

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Calling Add function
Add(vect)

输出

R语言如何修复:object of type closure is not subsettable

正如你在输出中看到的,向量的每个元素都被加上了10。现在,假设我们尝试对这个函数进行子集。

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Try to access the second element
# of the function
Add[2]

输出

R语言如何修复:object of type closure is not subsettable

编译器会产生这样的错误,因为在R语言中不允许对具有闭合类型的对象进行子集。为了确认函数是闭合类型的,我们可以使用typeof()函数,其语法如下。

语法: typeof(x)

参数

x:它代表指定的数据

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Print the type
typeof(Add)

输出

R语言如何修复:object of type closure is not subsettable

R中的任何函数都是封闭类型的。例如,让我们先试着对一个median()的内置函数进行子集。

语法: median(x)

参数: x:一个向量

返回类型: 返回向量元素的中位数

# Try to access the first element
median[1]

输出

R语言如何修复:object of type closure is not subsettable

现在我们将对range()的内置函数进行子集。

语法: range(x)

参数: x:一个向量

返回类型: 返回一个范围

# Try to access the first element
range[1]

输出

R语言如何修复:object of type closure is not subsettable

如何修复这个错误

我们可以通过不对函数进行子集来轻松解决这个错误。例如,假设我们想对向量 vect 的第二个元素使用Add()函数。

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Try to access the second element
# of the function
Add(vect[2])

输出

R语言如何修复:object of type closure is not subsettable

这次程序编译成功了,因为这里我们是对向量而不是对函数进行子集。另外,请注意,我们可以在整个向量上应用Add()。

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Calling Add function
Add(vect)

输出

R语言如何修复:object of type closure is not subsettable

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程