Как обрабатывать "аргумент" несопоставимый!= ЛОЖЬ "не используется (пока)"?
Я хочу проверить, является ли строка в 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