Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新定义R';s列表项查找,以便生成关键错误?_R - Fatal编程技术网

重新定义R';s列表项查找,以便生成关键错误?

重新定义R';s列表项查找,以便生成关键错误?,r,R,使用“$”或“[[”按名称从R列表中获取元素时,如果命名元素不在列表中,则返回“NULL”。我更希望它产生错误,因为这将使调试更容易。是否有方法重新定义这些运算符,以便获得所需的错误 请注意,“get”具有我想要的行为,但是在任何地方使用“get”而不是“$”都会使我的代码更难阅读 > myList <- list(a=5) > myList $a [1] 5 > myList$b NULL > myList[["b"]] NULL > get("b", m

使用“$”或“[[”按名称从R列表中获取元素时,如果命名元素不在列表中,则返回“NULL”。我更希望它产生错误,因为这将使调试更容易。是否有方法重新定义这些运算符,以便获得所需的错误

请注意,“get”具有我想要的行为,但是在任何地方使用“get”而不是“$”都会使我的代码更难阅读

> myList <- list(a=5)
> myList
$a
[1] 5

> myList$b
NULL
> myList[["b"]]
NULL
> get("b", myList)
Error in get("b", myList) : object 'b' not found
>myList myList
一美元
[1] 5
>myList$b
无效的
>myList[[“b”]]
无效的
>获取(“b”,myList)
get(“b”,myList)中出错:找不到对象“b”

我不确定这是否是您应该做的事情,但这是您可以做的事情。通常,您可以在您的环境中放置函数来屏蔽内置项,它们会得到适当的使用,您只需要使用反引号

`$` <- function(x,y) {
  S <- as.character(sys.call()[3]);
  a <- eval(substitute(.Primitive("$")(x, S)));
  if(!is.null(a)) a else stop("Not Found"); 
}

R>sleep$extra
 [1]  0.7 -1.6 -0.2 -1.2 -0.1  3.4  3.7  0.8  0.0  2.0  1.9  0.8  1.1  0.1 -0.1  4.4  5.5  1.6  4.6  3.4
R>sleep$CERA
Error in sleep$CERA : Not Found

`$`我不确定这是您应该做的事情,但这是您可以做的事情。一般来说,您可以在您的环境中放置函数来屏蔽内置项,它们会得到适当的使用,您只需要使用反引号

`$` <- function(x,y) {
  S <- as.character(sys.call()[3]);
  a <- eval(substitute(.Primitive("$")(x, S)));
  if(!is.null(a)) a else stop("Not Found"); 
}

R>sleep$extra
 [1]  0.7 -1.6 -0.2 -1.2 -0.1  3.4  3.7  0.8  0.0  2.0  1.9  0.8  1.1  0.1 -0.1  4.4  5.5  1.6  4.6  3.4
R>sleep$CERA
Error in sleep$CERA : Not Found

`$`我不确定这是您应该做的事情,但这是您可以做的事情。一般来说,您可以在您的环境中放置函数来屏蔽内置项,它们会得到适当的使用,您只需要使用反引号

`$` <- function(x,y) {
  S <- as.character(sys.call()[3]);
  a <- eval(substitute(.Primitive("$")(x, S)));
  if(!is.null(a)) a else stop("Not Found"); 
}

R>sleep$extra
 [1]  0.7 -1.6 -0.2 -1.2 -0.1  3.4  3.7  0.8  0.0  2.0  1.9  0.8  1.1  0.1 -0.1  4.4  5.5  1.6  4.6  3.4
R>sleep$CERA
Error in sleep$CERA : Not Found

`$`我不确定这是您应该做的事情,但这是您可以做的事情。一般来说,您可以在您的环境中放置函数来屏蔽内置项,它们会得到适当的使用,您只需要使用反引号

`$` <- function(x,y) {
  S <- as.character(sys.call()[3]);
  a <- eval(substitute(.Primitive("$")(x, S)));
  if(!is.null(a)) a else stop("Not Found"); 
}

R>sleep$extra
 [1]  0.7 -1.6 -0.2 -1.2 -0.1  3.4  3.7  0.8  0.0  2.0  1.9  0.8  1.1  0.1 -0.1  4.4  5.5  1.6  4.6  3.4
R>sleep$CERA
Error in sleep$CERA : Not Found

`$`为什么使用
sys.call()[3]
?与
sys.call()
不同?然后可以将
$
更改为
get
函数,以避免使用此新函数?
sys.call()[3]
是sys.call()的第三个元素,这是元素的名称。在我的示例中,
sleep$extra
有一个sys.call()
c(`$`,sleep,extra)
是的,当然,但是它不是一般的,关于通过
get
更改
$
函数吗?这就是你要问的问题:`$`我想@Llopis是在谈论类似
“$”的东西吗为什么使用
sys.call()[3]
?与
sys.call()
不同?然后可以将
$
更改为
get
函数,以避免使用此新函数?
sys.call()[3]
是sys.call()的第三个元素,这是元素的名称。在我的示例中,
sleep$extra
有一个sys.call()
c(`$`,sleep,extra)
是的,当然,但是它不是一般的,关于通过
get
更改
$
函数吗?这就是你要问的问题:`$`我想@Llopis是在谈论类似
“$”的东西吗为什么使用
sys.call()[3]
?与
sys.call()
不同?然后可以将
$
更改为
get
函数,以避免使用此新函数?
sys.call()[3]
是sys.call()的第三个元素,这是元素的名称。在我的示例中,
sleep$extra
有一个sys.call()
c(`$`,sleep,extra)
是的,当然,但是它不是一般的,关于通过
get
更改
$
函数吗?这就是你要问的问题:`$`我想@Llopis是在谈论类似
“$”的东西吗为什么使用
sys.call()[3]
?与
sys.call()
不同?然后可以将
$
更改为
get
函数,以避免使用此新函数?
sys.call()[3]
是sys.call()的第三个元素,这是元素的名称。在我的示例中,
sleep$extra
有一个sys.call()
c(`$`,sleep,extra)
是的,当然,但是它不是一般的,关于通过
get
更改
$
函数吗?这就是你要问的问题:`$`我想@Llopis是在谈论类似
“$”的东西吗