我正在将数据集中的文本从一种语言翻译成另一种语言。我有一本该语言的字典。
这是字典(字典)的外观。
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)])中的错误: 提供的元素多于要替换的元素
答案 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)