-1

我正在尝试从 R 中保存一个 data.frame,以便可以从 Excel 中读取它。我已经使用其他几个与我现在提到的具有相同结构的 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 ...

奇怪的是,如果我将鼠标放在现在只有 # 符号的数字单元格上(在 excel 文件中),我会看到原始 R data.frame 中曾经存在的数字的痕迹。例如,data.frame 中第一行的这些列的值是:

>RegPartV[1,c(5,6)]
      FreqDev LengthDev
1277 5.464336  -1.15185

如果我将鼠标放在与我刚刚显示的相同值相对应的 Excel 单元格(仅包含 # 符号)上,我会看到:

54643356148468 

-115184982188519

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

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

write.table(RegPartV,file="RegPartV",quote=F,sep="\t",row.names=F,col.names=T)

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

非常欢迎任何有关获得 Excel 可读 data.frame 的建议。

提前致谢。

4

2 回答 2

2

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

于 2012-11-05T15:25:48.120 回答
1

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

于 2012-11-05T14:15:52.167 回答