我想调用增援来帮助解决此错误,如下所示:
首先我创建了我的环境:
envizito <- new.env(parent = emptyenv())
attr(envizito, "name") <- "envizito"
并分配了一个名为aaa
的新变量:
envizito$aaa <- 12
我创建了一个函数:
FUNn <- function() {print(envizito$aaa)}
environment(FUNn)
# <environment: R_GlobalEnv>
然后,我将其环境更改为envizito
:
environment(FUNn) <- envizito
environment(FUNn)
# <environment: 0xc20b0a8>
#attr(,"name")
#[1] "envizito"
但是在致电FUNn()
后,它显示以下错误:
FUNn()
# Error in { : could not find function "{"
PS:虽然environment(FUNn)
指向内存中的相同位置,但在我拨打ls()
ls(envir = envizito, all.names = TRUE)
# [1] "aaa"
任何意见和建议将不胜感激! 谢谢你的关注。
答案 0 :(得分:5)
add_shortcode("custom_pdf_entries", array($this,'custom_get_form_entry'));
/*
* Get All PDF from Form exclude those we dont want
*/
function custom_get_form_entry($atts){
$search_arg = array(
'status' => 'active',
'field_filters' => array(
'mode' => 'all',
array(
'key' => 'created_by',
'value' => get_current_user_id()
)
)
);
$sorting = array(
'key' => '1',
'direction' => 'ASC'
);
$all_forms = GFAPI::get_forms();
$excluded_id = explode("," , $atts['exclude']);
ob_start();
foreach($all_forms as $key => $a_val){
if( !in_array($a_val['fields'][0]->formId, $excluded_id) ){
$entries = GFAPI::get_entries($a_val['fields'][0]->formId,$search_arg,$sorting);
$count = 1;
if(count($a_val['gfpdf_form_settings']) > 0){
$gravity_pdf_form_id = current(array_keys($a_val['gfpdf_form_settings']));
if($entries){
foreach($entries as $key => $val){
echo do_shortcode('[gravitypdf name="Forms" type="download" id="'.$gravity_pdf_form_id.'" text="'.$a_val['title'].' #'.$count.'" entry="'.$val['id'].'"]');
echo '<br/><br/>';
$count++;
}
}
}
}
}
return ob_get_clean();
}
就像R中不是对象的其他所有东西一样,是一个函数。创建{
时,您将空环境指定为其父级。名称提示的空白环境不包含任何对象,即它是空的。
当您将envizito
的环境更改为FUNn
时,您将其父环境设置为空白环境。当您调用envisito
(函数定义在全局环境中)时,它会在其环境(即FUNn
)中搜索函数envisito
(它在{
中找到的第一个函数)。它在FUNn
中找不到{
,因此它看起来就像一个环境。但是,该环境是envisito
,它是空的。因此,它失败并显示无法找到函数empty environment
的错误。