KnitR:控制台和PDF之间的输出差异(编码)

KnitR:控制台和PDF之间的输出差异(编码),r,character-encoding,knitr,R,Character Encoding,Knitr,首先,我有两个大小为15的向量: lb_结果: cap-color cap-color odor odor odor odor gill-spacing gill-size gill-color s

首先,我有两个大小为15的向量: lb_结果:

cap-color               
cap-color               
odor                    
odor                    
odor                    
odor                    
gill-spacing            
gill-size               
gill-color              
stalk-surface-above-ring
stalk-color-above-ring  
spore-print-color       
spore-print-color       
population              
population 
以及: vl_结果:

buff     
pink     
creosote 
foul     
musty    
pungent  
close    
narrow   
buff     
silky    
cinnamon 
chocolate
green    
scattered
several 
现在,我希望输出为:

cap-color ∈ {buff, pink}
odor ∈ {creosote, foul, musty, pungent}
gill-spacing = {close}
gill-size = {narrow}
gill-color = {buff}
stalk-surface-above-ring = {silky}
stalk-color-above-ring = {cinnamon}
spore-print-color ∈ {chocolate, green}
population ∈ {scattered, several}
我写了一个Rscript作为:

dt <- data.table("Name"=lb_result,"Var"=vl_result)  
  res <- dt[,paste(Var,collapse=","),by=Name]

  for(i in 1:length(res$V1)){
  if (length(grep(",",res$V1[i],value=T)) == 0) {
    res$V1[i] = paste("= ", res$V1[i])
  } else
    # {res$V1[i] = paste(" \u2208 {", res$V1[i], "}")}
    {res$V1[i] = paste(" ∈ {", res$V1[i], "}")}
  }


  for(i in 1:length(res$V1)){
    print(paste(res$Name[i],res$V1[i]))
  }
但是,当我在文件中插入这个Rscript时。带刀的Rnw

以PDF文件形式输出:


它显示
,而不是∈

此问题中至少有两个编码级别。你必须确保两者都是正确的。第一级是Rnw文件的文件编码,需要将其传递到
knit(…,encoding=“your file encoding”)
。第二级是LaTeX中的编码规范,通常通过
inpuntec
包。例如,如果编码是UTF-8,则使用包[utf8]{inputenc}

如果您通过例如
source()
将R脚本作为独立文件执行,则可能存在第三级文件编码,即R脚本的编码。如果没有更多详细信息,例如操作系统、文本编辑器以及如何调用
knitr
,则很难诊断问题。至少你需要包括

library(knitr)
sessionInfo()
library(knitr)
sessionInfo()