Как обрабатывать "аргумент" несопоставимый!= ЛОЖЬ "не используется (пока)"?

Я хочу проверить, является ли строка в data.frame() дубликатом существующей строки. Как уже указывалось, одним из способов может быть использование функции дублирования. Однако, если я использую функцию, я получаю следующую ошибку:

Error: argument 'incomparables != FALSE' is not used (yet)

В довольно старой почте кто-то указал, что это на самом деле ошибка в R (больше информации здесь). Мой data.frame() выглядит так:

data.frame(val1=int,val2=int,val3=int,val4=float);

Мне интересно, в чем проблема на самом деле, так как в моем data.frame, по-видимому, нет значения "NA", так как

?duplicate

указывает на то. Это, возможно, очень глупый вопрос, но я довольно новичок в R и буду рад любым советам по этому вопросу!

Заранее спасибо Майкл

PS: я привел пример как предложено

table <- NULL;

foo <- function(n, d, nh, v){
  newEntry <- data.frame(node_i=n, node_j=nh, dst=d, phi=v);

  if(length(table != 0)){
    if(!duplicated(table, newEntry)){
      add(n, nh, d, v);
    }else{
      print("it is a duplicate!")    
    }
  }else{
    add(n, nh, d, v);
  }
}

add <- function(n, d, nh, v){
  rbind(table, data.frame(node_i=n, node_j=nh, dst=d, phi=v)) ->> table;
}

bar <- function(){
  foo(23,42,5,4.0);
  print(table);
  foo(22,42,5,4.0);  
  print(table);
  foo(23,42,5,4.0);
  print(table);
}

Тем не менее, это, похоже, не проблема с duplicate() вообще. Я получаю ту же ошибку, если пытаюсь добавить еще один вздох строки.

1 ответ

Если вы заменитеduplicated функция с match_df от plyr, проблема должна быть решена.

library(plyr) # for match_df
table <- NULL;

foo <- function(n, d, nh, v){
  newEntry <- data.frame(node_i=n, node_j=nh, dst=d, phi=v);

  if(length(table != 0)){
    if(nrow(plyr::match_df(table, newEntry))){
      add(n, nh, d, v);
    }else{
      print("it is a duplicate!")    
    }
  }else{
    add(n, nh, d, v);
  }
}

add <- function(n, d, nh, v){
  rbind(table, data.frame(node_i=n, node_j=nh, dst=d, phi=v)) ->> table;
}

bar <- function(){
  foo(23,42,5,4.0);
  print(table);
  foo(22,42,5,4.0);  
  print(table);
  foo(23,42,5,4.0);
  print(table);
}

Выход

> bar()
node_i node_j dst phi
1     23     42   5   4
Matching on: node_i, node_j, dst, phi
[1] "it is a duplicate!"
node_i node_j dst phi
1     23     42   5   4
Matching on: node_i, node_j, dst, phi
[1] "it is a duplicate!"
node_i node_j dst phi
1     23     42   5   4
> table
node_i node_j dst phi
1     23     42   5   4                  
Другие вопросы по тегам