R Shiny中write.table函数col.names参数无效错误的解决
问题原因及修正方案
报错invalid 'col.names' specification的根源是写入向量时错误设置了col.names参数,具体出现在这两行代码:
write.table(bm.cnames, file='pData.txt', col.names='Treatment', row.names=FALSE, quote=FALSE, sep='\t')
当bm.cnames是一维向量时,write.table会自动将其转换为单列无名数据框。此时同时设置row.names=FALSE和col.names='Treatment'会触发参数冲突——R无法正确解析单列向量的列名指定方式。
修正方案(二选一即可)
方案1:将向量转换为带列名的数据框后写入
把bm.cnames包装成数据框,明确指定列名后再写入:
# 转换为带目标列名的数据框 bm_cnames_df <- data.frame(Treatment = bm.cnames) # 写入文件,无需额外指定col.names write.table(bm_cnames_df, file='pData.txt', row.names=FALSE, quote=FALSE, sep='\t')
方案2:给向量设置名称后自动识别列名
先给向量添加名称,再让write.table自动读取列名:
# 给向量设置名称,作为输出的列名 names(bm.cnames) <- 'Treatment' # 写入时指定col.names=TRUE write.table(bm.cnames, file='pData.txt', col.names=TRUE, row.names=FALSE, quote=FALSE, sep='\t')
其他代码验证
其余几行write.table调用(写入annot.df$UniProt和deAcc)参数设置正确,因为明确指定了col.names=FALSE,不会触发报错。
内容的提问来源于stack exchange,提问作者Junaid Ahmed Kori
相关产品推荐
相关产品推荐

