R 中数据的写入与导出

来源:互联网 发布:高级计量经济学 知乎 编辑:程序博客网 时间:2024/06/05 17:40

1.利用edit 函数,键盘输入。利用edit 函数首先要有原始值才可以。

> a1<-matrix(1)> edit(a1)     col1 var2 var3[1,]    1    1    1> a1     [,1][1,]    1
可以看出,如果不把edit(a1)赋值,a1的结果是不会发生变化的。有没有自动保存到修改后的内容的函数呢?

有,fix()。

> fix(a1)
这样a1的数字就会自动保存。

2.利用Rstudio 导出数据.write.table(x,"y.txt",row.names=F)

x 代表原数据集的名称,y 代表新数据的名称,后面可以跟txt和csv均可以。

> aa<-head(mtcars)> aa                   mpg cyl disp  hp drat    wt  qsec vs am gear carbMazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1> write.table(aa,"bb.txt",row.names=F)
在工作目录下面就会多一个bb的txt 文件,这里面 新文件的名称和文件类型必须加上引号才可。

row.names 中的“.”不要忘掉。

3.导入数据。普通用法read.table()这里面需要注意,如果第一行含有列名header=T尽量写上。

> a1<-read.table("aa.dlm",header=T)Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :   line 1 did not have 8 elements
这是什么原因呢? 数据不全?怎么办,找fill 啊。

> a1<-read.table("aa.dlm",header=T,fill=T)> a1   SkullID VolCT VolBead VolLWH VolFinarelli VolCT2 VolBead2 VolLWH21    DIC44   389     375   1484          337     NA       NA      NA2      B11   389     370   1722          377     NA       NA      NA3    DIC90   352     345   1495          328     NA       NA      NA4    DIC83   388     370   1683          377     NA       NA      NA5   DIC787   375     355   1458          328     NA       NA      NA6  DIC1573   325     320   1363          291     NA       NA      NA7     C120   346     335   1250          289    346      330    12648      C25   302     295   1011          250    303      295    1009
有了fill=T, 再也不用担心含有缺失值的我数据读不进来了。

4.导入数据报错的情况。


假如有上面的数据需要导入,我按照3中的步骤可以这么写。

> aa<-read.table("hafu.csv",header=T,fill=T)Error in read.table("hafu.csv", header = T, fill = T) :   列的数目比列的名字要多
奇了怪了,明明写了fill=T了,为何还是读不进来。这是由于分割的符号不对。再把分割符号写上sep=","。

> aa<-read.table("hafu.csv",header=T,fill=T,sep=",")> head(aa)  Year         Series     Character Gender   Father    Mother  Eyes  Hair1 1963 Yuki no Taiyou         Sanae      F Japanese  American            2 1964     Cyborg 009 Joe Shimamura      M American  Japanese brown brown3 1967      Lupin III     Lupin III      M  French? Japanese? black black4 1967   Nekome Kozou  Cat-Eyed Boy      M Japanese   Fantasy brown      5 1972      Gatchaman  Jun the Swan      F                    green green6 1974 Great Mazinger      Jun Hono      F American  Japanese black black










0 0
原创粉丝点击