词典替换功能中出现错误“提供的元素比要替换的更多”

时间:2019-10-14 12:37:23

标签: r

我正在将数据集中的文本从一种语言翻译成另一种语言。我有一本该语言的字典。

这是字典(字典)的外观。

  

id Lang英语

     

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,English [match(b [[i]],Lang)])中的错误:   提供的元素多于要替换的元素

1 个答案:

答案 0 :(得分:0)

您不应在编程中使用with()。这是文档所说的:

对于交互式使用,这是非常有效的,而且阅读效果很好。但是,对于编程而言,即在一个函数中,需要格外小心,并且通常应避免使用with(),例如,数据中的变量可能会意外覆盖局部变量,请参见参考。

由于您未提供reproducable example,所以我无法测试此方法,但这可能会起作用:

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)