gpt4 book ai didi

r - source()ing 文件会更改函数中的 BOM 字符

转载 作者:行者123 更新时间:2023-12-02 02:48:59 24 4
gpt4 key购买 nike

我有一个 .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))

}

请注意,当 fieldName == "firstName" 时,有一个 mutate() 会去除 

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))

}

并且  现在已更改为 。这会导致后面的函数失败,因为没有需要删除的  因此后面的连接失败。

如何防止这种情况发生?我无法调整数据库结构。

最佳答案

文件的编码取决于操作系统。在我的 Linux 机器上,您的示例运行没有问题。 Linux 使用 UTF-8 作为默认编码。但是,Windows 使用系统的默认编码,这可能不同于 UTF-8

因此,在 source() 中明确指定 encoding="UTF-8" 应该可以解决问题:

source("R/get_join_employee_data_userid.R", encoding="UTF-8")

关于r - source()ing 文件会更改函数中的 BOM 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com