我有一个set pro
文件,其中包含几个函数,其中一个定义为:
.R
请注意,有一个get_entry_detail <- function(con, vec_of_entryids){
query <- paste0("select entryId, fieldName, fieldValue
from `hthu-eligibility`.entry_detail
where entryId in (", paste(vec_of_entryids, collapse = ","), ");")
dbGetQuery(con, query) %>%
mutate(fieldName = ifelse(fieldName == "firstName",
gsub(paste(c(""), collapse = "|"), "", fieldName),
fieldName))
}
在mutate()
时会剥离
。
我fieldName == "firstName"
将此文件放在另一个source()
文件的顶部,但是当我在采购文件后查看该函数时,该函数已更改为:
.R
现在> source("R/get_join_employee_data_userid.R")
> get_entry_detail
function(con, vec_of_entryids){
query <- paste0("select entryId, fieldName, fieldValue
from `hthu-eligibility`.entry_detail
where entryId in (", paste(vec_of_entryids, collapse = ","), ");")
dbGetQuery(con, query) %>%
mutate(fieldName = ifelse(fieldName == "firstName",
gsub(paste(c(""), collapse = "|"), "", fieldName),
fieldName))
}
已更改为
。这会导致以后的功能失败,因为没有
需要删除,因此以后的连接失败。
如何防止这种情况发生?我无法调整数据库结构。
答案 0 :(得分:1)
文件的编码取决于操作系统。在我的Linux机器上,您的示例运行没有问题。 Linux使用UTF-8
作为默认编码。但是,Windows使用系统的默认编码,该编码可能与UTF-8
不同。
因此,在encoding="UTF-8"
中明确指定source()
应该可以解决此问题:
source("R/get_join_employee_data_userid.R", encoding="UTF-8")
答案 1 :(得分:0)
This answer提供了一个解决方案。现在我的函数如下:
get_entry_detail <- function(con, vec_of_entryids){
dbSendQuery(con, 'set character set "utf8"')
query <- paste0("select entryId, fieldName, fieldValue
from `hthu-eligibility`.entry_detail
where entryId in (", paste(vec_of_entryids, collapse = ","), ");")
dbGetQuery(con, query)
}
尽管我仍然不知道为什么在源文件而不是直接读取文件时更改了字符。