Sql 如何在R中写入固定宽度的文本文件?
我有一个数据集,它存储在一个名为“new”的变量中,我正试图将它写入一个txt文件,每个列之间具有固定的指定宽度 我已经试过了Sql 如何在R中写入固定宽度的文本文件?,sql,r,fixed-width,Sql,R,Fixed Width,我有一个数据集,它存储在一个名为“new”的变量中,我正试图将它写入一个txt文件,每个列之间具有固定的指定宽度 我已经试过了 write.fwf(new, file = "test.txt", width = c(57,20,10,6,19,12,10,18), colnames = FALSE, sep = "") 但似乎我放置宽度量的顺序与相应的列不一致,例如,如果我将一些宽度更改为较低的宽度,则会给出“宽度对于ColumnC来说太小”消息,即使我指定的宽度是针对columnB的 我希望
write.fwf(new, file = "test.txt", width = c(57,20,10,6,19,12,10,18), colnames = FALSE, sep = "")
但似乎我放置宽度量的顺序与相应的列不一致,例如,如果我将一些宽度更改为较低的宽度,则会给出“宽度对于ColumnC来说太小”消息,即使我指定的宽度是针对columnB的
我希望能够在每一列之间设置一个指定的宽度,以便在每一列之间有一个特定的空间量
下面是相同的txt文件格式,我刚刚更改了所有名称:
SPRN55 TEST ST LOS ANGELES CA 11111 DOE JOHN 1112223333 5555555510.00 N 1111111111
SPRN8658 TEST DRIVE LOS ANGELES CA 11111 DOE JOHN 1112223333 5555555510.00 N 1111111111
SPRN787 TEST DRIVE LOS ANGELES CA 11111 DOE JOHN 1112223333 5555555510.00 N 1111111111
这些列按地址、城市、州、邮政编码、姓氏、名字、电话、帐户、金额、N、号码的顺序排列
现在,当我在这个示例上尝试下面的代码时
write.fwf(mydata, file = "test1.txt", width = c(57,20,3), colnames = FALSE, sep = "")
我得到“'width'(57)对于列来说太小了:V1
“宽度”至少应为(237)”
这与我在实际数据上运行此程序时遇到的问题类似。(a)能否请您说明您在
write.fwf
中使用的软件包?是格达塔还是别的什么?(b) 你能为你的问题举一个简短的可重复的例子吗?比如,如果您只尝试了新的的前两行,您看到问题了吗?如果是这样,请以可复制/粘贴的方式共享new
的前两行,如dput(droplevels(new[1:2,])
。如果这两行没有说明问题,请找到一个子集并共享。a)是的,这是gdata软件包b)如果我只指定前两列的宽度,它会工作,但会发出警告消息说“回收宽度”和“要替换的项目数不是替换长度的倍数”我已经用一个例子编辑了我的主要帖子。你能分享重现这个问题的数据吗?如果您能使用dput()
来共享数据,这样数据就可以复制粘贴了,这将是非常好的。当我读入您在问题中输入的数据时,df=read.table(text='ADDR CITY STATE Test\u St Test\u CITY CA',header=T)
(添加\u
以便它进行解析…因为您没有使用dput
。谁知道您的列类。如果您使用dput()
所以我们不必对此进行猜测。实际上,请使用dput()
)。然后我对该数据运行您的命令,不会收到任何警告、错误,并且输出看起来很好。因此,您的样本数据不会重现问题。你能找到证明问题的数据子集吗?也许你的专栏比你想象的要宽。。。查看排序(nchar(您的数据$ColumnE),递减=T)
。但是如果你不能告诉我们这个问题,我们就没有什么可以测试可能的解决方案。(a)你能告诉我们你正在使用哪个软件包来编写.fwf
?是格达塔还是别的什么?(b) 你能为你的问题举一个简短的可重复的例子吗?比如,如果您只尝试了新的的前两行,您看到问题了吗?如果是这样,请以可复制/粘贴的方式共享new
的前两行,如dput(droplevels(new[1:2,])
。如果这两行没有说明问题,请找到一个子集并共享。a)是的,这是gdata软件包b)如果我只指定前两列的宽度,它会工作,但会发出警告消息说“回收宽度”和“要替换的项目数不是替换长度的倍数”我已经用一个例子编辑了我的主要帖子。你能分享重现这个问题的数据吗?如果您能使用dput()
来共享数据,这样数据就可以复制粘贴了,这将是非常好的。当我读入您在问题中输入的数据时,df=read.table(text='ADDR CITY STATE Test\u St Test\u CITY CA',header=T)
(添加\u
以便它进行解析…因为您没有使用dput
。谁知道您的列类。如果您使用dput()
所以我们不必对此进行猜测。实际上,请使用dput()
)。然后我对该数据运行您的命令,不会收到任何警告、错误,并且输出看起来很好。因此,您的样本数据不会重现问题。你能找到证明问题的数据子集吗?也许你的专栏比你想象的要宽。。。查看排序(nchar(您的数据$ColumnE),递减=T)
。但是如果你不能告诉我们这个问题,我们就没有什么可以测试可能的解决方案。