Ошибка в словаре заменить функцию «больше элементов, чем есть, чтобы заменить» - PullRequest
0 голосов
/ 14 октября 2019

Я перевожу текст в наборе данных с одного языка на другой. У меня есть словарь для этого языка.

Вот как выглядит словарь (dict).

id Lang English

1 Juu Up

2 Chini Down

Словарь содержит 365 строк и 3 столбца. Мои данные содержат более 3000 строк и ~ 100 столбцов.

Вот мой код:

translated <- vector("double", ncol(dataset))  
for (i in seq_along(dataset)) {            
 # dict[match(dataset[[i]], dict$Lang), 2, drop=F]
  translated[[i]] <- with(dict, English[match(dataset[[i]], Lang)])      
}
tr_dataset <- as.data.frame(translated)

Вот ошибка, которую я продолжаю получать Ошибка на выходе [[i]] <- with (dict,Английский [match (b [[i]], Lang)]): предоставлено больше элементов, чем необходимо заменить </p>

1 Ответ

0 голосов
/ 14 октября 2019

Вы не должны использовать with() в программировании. Вот что говорится в документации:

Для интерактивного использования это очень эффективно и приятно читать. Однако для программирования, т. Е. В своих функциях, требуется больше внимания, и обычно следует воздерживаться от использования с (), поскольку, например, переменные в данных могут случайно переопределить локальные переменные, см. Ссылку.

Iне может проверить подход, потому что вы не предоставили воспроизводимый пример , но это может сработать:

translated <- vector("double", ncol(dataset))  
for (i in seq_along(dataset)) {            
 # dict[match(dataset[[i]], dict$Lang), 2, drop=F]
  translated[[i]] <- dict$English[match(dataset[[i]], Lang)]) # this row changed    
}
tr_dataset <- as.data.frame(translated)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...