2

我正在尝试使用xtable包编写带有复选框的表。我选择的复选框似乎是引发错误的原因。我只是不知道如何解决它。

library(xtable)

## I want to create a table with the names of some people in two columns
nStu = 10

## Create fake names
names = character(nStu)
for(i in 1:nStu){
  names[i] = paste(LETTERS[i],rep(letters[i],5),sep='',collapse='')
}
## put check boxes behind each of the names
squares = rep('$ \\square $',nStu)

## Build the table
rosterTab = data.frame('Name'=names,'Mostly'=squares,'Sometimes'=squares, stringsAsFactors = FALSE)

## Now chop it in half and paste the halves together.  (Yes, if nStu is odd, this will have to be fixed)
lTab = nStu%/%2
aTab = rosterTab[1:lTab, ]
bTab = rosterTab[(lTab+1):nStu, ]
outTab = cbind(aTab,bTab)

## Everything before this point runs fine.
outTab.tab = xtable(outTab,label=FALSE)
align(outTab.tab) = 'llcc||lcc'
print(outTab.tab, include.rownames=FALSE, sanitize.text.function = function(x){x})

我收到的错误消息是:

as.string(y) 中的错误:无法将参数强制转换为字符串

如果我使用,这个错误就会消失:

squares = rep('aaa',nStu)

理想情况下,我想从 csv 文件中获取名称(我可以很容易地做到这一点),并将使用 knitr 将其写入 LaTeX 文档。(我想为一堆输入文件执行此操作,因此自动执行此任务对我来说似乎很有用。)

以下是我考虑过的其他一些想法:

  1. $\LaTeX$ 唯一的解决方案。请注意,还有另一个困难(除了输入文件中没有的正方形),那就是我需要对输入文件中的字符串进行一些文本操作。
  2. \square用其他看起来像复选框的对象替换符号,(通过 knitr)我可以发送到 $\LaTeX$。
4

0 回答 0