Excel使用R中的write.table函数从数值向量中丢失值

Excel使用R中的write.table函数从数值向量中丢失值,r,excel,dataframe,numeric,R,Excel,Dataframe,Numeric,我正在尝试从R中保存data.frame,以便可以从Excel中读取它。我已经用其他几个data.frames完成了这项工作,这些data.frames的结构与我现在提到的相同,到目前为止没有任何问题。但由于某种原因,当我尝试保存data.frame并用Excel打开它时,Excel无法读取列FreqDev和LengthDev中的许多数值。相反,这些行显示了一串“#”符号 我的data.frame如下所示: head(RegPartV) LogFreq Word PhonC

我正在尝试从R中保存data.frame,以便可以从Excel中读取它。我已经用其他几个data.frames完成了这项工作,这些data.frames的结构与我现在提到的相同,到目前为止没有任何问题。但由于某种原因,当我尝试保存data.frame并用Excel打开它时,Excel无法读取列FreqDev和LengthDev中的许多数值。相反,这些行显示了一串“#”符号

我的data.frame如下所示:

head(RegPartV)
     LogFreq     Word   PhonCV WordClass  FreqDev  LengthDev Irregular
1277  28.395  geweest CV-CVVCC         V 5.464336 -1.1518498     FALSE
903   25.647  gemaakt CV-CVVCC         V 4.885296 -1.1518498     FALSE
752   23.304    gehad   CV-CVC         V 4.391595 -2.1100420     FALSE
610   22.765 gebracht CV-CCVCC         V 4.278021 -0.6727537     FALSE
1312  22.041   gezegd  CV-CVCC         V 4.125465 -1.6309459     FALSE
647   21.987   gedaan  CV-CVVC         V 4.114086 -1.6309459     FALSE
data.frame中的信息类型为:

str(RegPartV)
'data.frame':   2096 obs. of  7 variables:
 $ LogFreq  : num  28.4 25.6 23.3 22.8 22 ...
 $ Word     : chr  "geweest" "gemaakt" "gehad" "gebracht" ...
 $ PhonCV   : chr  "CV-CVVCC" "CV-CVVCC" "CV-CVC" "CV-CCVCC" ...
 $ WordClass: Factor w/ 1 level "V": 1 1 1 1 1 1 1 1 1 1 ...
 $ FreqDev  : num  5.46 4.89 4.39 4.28 4.13 ...
 $ LengthDev: num  -1.152 -1.152 -2.11 -0.673 -1.631 ...
 $ Irregular: logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
write.table(RegPartV,file="RegPartV",quote=F,sep="\t",row.names=F,col.names=T)
奇怪的是,如果我把鼠标放在现在只有#符号的数字单元格上(在excel文件中),我会看到原来R data.frame中的数字痕迹。例如,data.frame中第一行的这些列的值为:

>RegPartV[1,c(5,6)]
      FreqDev LengthDev
1277 5.464336  -1.15185
如果我将鼠标放在Excel单元格(仅包含#符号)上,对应于我刚才显示的相同值,我会看到:

54643356148468 

所以数字仍然存在,但由于某种原因,R或Excel无法计算小数点的位置

我用于保存data.frame(以及我用于结构等效的data.frame)的方法是:

然后我用Excel打开文件,我希望看到所有的信息,由于某种原因,我在这个特定的data.frame中遇到了这个数字问题

欢迎提供任何有关获取Excel可读data.frame的建议


提前感谢。

这实际上不是一个错误:“#”表示字符串/值太长,无法放入列中。加宽列,您将看到正确的内容。

从您的问题描述中,我怀疑您有“,”作为Excel中的默认小数分隔符。更改Excel中的默认值或将
dec=“,”
添加到
write.table
命令中。

谢谢@Jüri,但数字似乎仍然有问题。FreqDev和LengthDev列的第一个单元格的原始值分别为5.464336和-1.15185,但在Excel中放大单元格后,我得到的值为54.643.356.148.468和-115.184.982.188.519,因此Excel似乎仍然无法很好地读取单元格内容。另外,我忘了补充一点,有几个值被正确读取。也就是说,那些0.0左右,但高于1的会被弄乱。用文本编辑器打开
RegPartV
,确定问题是出在Excel还是R上。我的钱在Excel上。用记事本打开时导出的文件内容是什么?@hadley问题确实出在Excel上。如果我用文本编辑器打开文件,我会看到所有正确的信息。遗憾的是,我需要excel,因为我需要信息放在不同的单元格中,而用文本编辑器打开它只会给我原始数据。尤里,我想这也回答了你的问题。使用记事本正确显示信息。你是对的。我的excel默认小数分隔符是“,”,因此我刚刚在write.table函数中添加了dec=“,”,现在我可以在excel文件中看到正确的值。但这很奇怪,因为我以前使用过结构等效的文件,这是我第一次遇到这个问题。无论如何,事情都已经解决了,所以谢谢你!
write.table(RegPartV,file="RegPartV",quote=F,sep="\t",row.names=F,col.names=T)