如何获得';清洁';R中带RODBC的excel工作表选项卡名称列表?

如何获得';清洁';R中带RODBC的excel工作表选项卡名称列表?,r,names,worksheet,rodbc,R,Names,Worksheet,Rodbc,我不熟悉R,甚至更不熟悉将其与Excel结合使用。我想在.xls文件中获得所有工作表名称(注释、权重、长度)的列表。您可以看到我在下面尝试的内容-问题是出于某种原因,输出的末尾有一个$dollar符号,有时还被单引号包围 FileToImport <- "C:\\folder\\filetoimport.xls" z <- odbcConnectExcel(FileToImport, readOnly = TRUE) sqlTables(z) TABLE_CAT TABLE_SC

我不熟悉R,甚至更不熟悉将其与Excel结合使用。我想在.xls文件中获得所有工作表名称(注释、权重、长度)的列表。您可以看到我在下面尝试的内容-问题是出于某种原因,输出的末尾有一个$dollar符号,有时还被单引号包围

FileToImport <- "C:\\folder\\filetoimport.xls"

z <- odbcConnectExcel(FileToImport, readOnly = TRUE)

sqlTables(z)
TABLE_CAT TABLE_SCHEM         TABLE_NAME   TABLE_TYPE REMARKS
1 C:\\folder\\filetoimport.xls <NA>     Notes$ SYSTEM TABLE    <NA>
2 C:\\folder\\filetoimport.xls <NA> 'Weights$'        TABLE    <NA>
3 C:\\folder\\filetoimport.xls <NA> 'Lengths$'        TABLE    <NA>

我可以尝试清理这些字符,但我真的不知道如何处理,因为引号格式不一致-一些工作簿是“系统表”,一些只是“表”。有人能解释一下这些工作表之间的区别,并告诉我如何重新创建“干净”的标签名吗

我对
RODBC
没有太多经验,但您是说clean的以下输出吗

如果你把它保存在一个向量中,比如说
b
,你可以用
z[i]
访问它们。如果您只需要某种类型,那么:

 na.omit(ifelse(data.frame(sqlTables(z))$TABLE_TYPE=='SYSTEM TABLE', data.frame(sqlTables(z))$TABLE_NAME, NA))
 [1] "Sheet1$" "Sheet2$" "Sheet3$"

无可否认,这是不合法的……

多亏了上面正确的方向,我成功地使用正则表达式在所需的输出中获得了工作表名称(没有任何标点符号)


我对Excel/RODBC几乎没有经验,但工作簿是否与工作表相同?对于清理名称,您可以尝试使用正则表达式。是的,对不起,我一直都在谈论工作表。我想到了正则表达式,但我不会写它们!有谁能给我一个技巧,如何删除单引号和美元符号的名称,然后呢?我想出了如何做的reg-exp,以获得所需的输出,谢谢
gsub(“[[:punct:][]”,“”,sqlTables(z)[,“TABLE_NAME”]”)
[1]“Sheet1”“Sheet2”“Sheet3”
感谢您的努力,但我通过以上正则表达式的建议找到了我想要的东西。
 data.frame(sqlTables(z))$TABLE_NAME
 [1] "Sheet1$"  "Sheet2$"  "Sheet3$"  "ZRDaten1"
 na.omit(ifelse(data.frame(sqlTables(z))$TABLE_TYPE=='SYSTEM TABLE', data.frame(sqlTables(z))$TABLE_NAME, NA))
 [1] "Sheet1$" "Sheet2$" "Sheet3$"
gsub("[[:punct:]]","",sqlTables(z)[,"TABLE_NAME"]) 
[1] "Sheet1" "Sheet2" "Sheet3"