有删除错误消息的功能

时间:2020-02-06 16:14:03

标签: r

R闪亮应用程序(服务器端)中的以下代码给出的结果如下所示。但是我们可以禁用此错误消息吗?就像我们不需要显示任何消息。我们可以做到吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int remove_element(int** array, int sizeOfArray, int indexToRemove)
{
    int i;

    int* temp = malloc((sizeOfArray - 1) * sizeof(int));

    memmove(
            temp,
            *array,
            (indexToRemove+1)*sizeof(int));

    memmove(
            temp+indexToRemove,
            (*array)+(indexToRemove+1),
            (sizeOfArray - indexToRemove)*sizeof(int));

    free (*array);
    *array = temp;
    return 0;

}

int findDuplicate(int* array, int sizeOfArray){
    int i, j;


    for( j = 0 ; j < sizeOfArray ; j++ ) {
        for(i = 0; i < sizeOfArray; i++){
            if(array[i] == array[j] && i != j){
                    return i;
            }
        }
    }

    return 0;
}

int main()
{
   time_t t;
   srand((unsigned) time(&t));

    int arraySize = 11;
    int* test = malloc(arraySize * sizeof(int*));
    int i, indexToRemove = 0;

   for( i = 0 ; i < arraySize ; i++ ) {
      test[i] = ((rand() % (91 + 1 - 65)) + 65);
   }

    for( i = 0 ; i < arraySize ; i++){
        printf("%d, ", test[i]);
    }

    printf("\n============================================\n");

    for (i = 0 ; i < arraySize ; i++){
        indexToRemove = findDuplicate(test,arraySize);

        if ( indexToRemove != 0){
            remove_element(&test, arraySize, indexToRemove);
            arraySize = arraySize - 1;  
        }   
    }

    for( i = 0 ; i < arraySize ; i++){
        printf("%d, ", test[i]);
    }

    return 0;
}

控制台结果(红色)

options(shiny.sanitize.errors = TRUE)

预期结果:

Error : An error has occurred. Check your logs or contact the app author for clarification


1 个答案:

答案 0 :(得分:0)

如@ nopassport1所述,最好的选择是首先防止错误。

或者,根据情况,您可以通过将代码包装在try(x,silent = TRUE)函数中来删除错误警告。

> try(1+"a")
Error in 1 + "a" : non-numeric argument to binary operator
> try(1+"a",silent = TRUE)
>