Rstudio版本1.0.136
R版本3.3.2
奇怪的是,当我在一个.Rmd
带有Rmarkdown 的文件中逐行运行代码(它在代码中有中文注释)时 ,控制台将打印一个警告如下:
Warning message: In strsplit(code, "\n", fixed = TRUE) : input string 1 is invalid in this locale
它太烦人了,因为它会出现每一行.我在RStudio的设置中更改了默认文本编码,但是UTF-8和BG2312都不能阻止出现此警告消息.请注意,它只是在行代码逐行时出现,如果我选择一个块按一个按钮来生成一个html,则不会出现警告.我的代码如下:
```{r} da=read.table("m-intcsp7309.txt",header=T) head(da) # date intel sp?? length(da$date) # 444?? intc=log(da$intc+1) # ?? plot(cars) # ?????? plot(cars) # ????????? plot(cars) ```
我测试它不是来自中文评论,我
只是在现在才使用英语时遇到它.以下是更多信息:
Sys.getlocale() [1] "LC_COLLATE=Chinese (Simplified)_People's Republic of China.936; LC_CTYPE=Chinese (Simplified)_People's Republic of China.936; LC_MONETARY=Chinese (Simplified)_People's Republic of China.936; LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_People's Republic of China.936"
www.. 9
将其直接嵌入包含中文字符注释的Rmarkdown脚本中:
Sys.setlocale('LC_ALL','C')
如果你只是在运行rmarkdown脚本之前在R控制台中运行它,那可能会暂时改变设置和工作,但正如你所说,如果你重新启动R它将不会保持这种状态.这就是为什么最好直接嵌入该行进入需要它的脚本.
将其直接嵌入包含中文字符注释的Rmarkdown脚本中:
Sys.setlocale('LC_ALL','C')
如果你只是在运行rmarkdown脚本之前在R控制台中运行它,那可能会暂时改变设置和工作,但正如你所说,如果你重新启动R它将不会保持这种状态.这就是为什么最好直接嵌入该行进入需要它的脚本.
我遇到了类似的问题gsub()
,只需设置即可解决该问题,而无需更改语言环境useBytes = TRUE
。同样的工作strsplit()
。从文档中:
如果为TRUE,则匹配是逐字节进行,而不是逐字符进行,并且不会转换带有标记编码的输入。