Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在R中写入固定宽度的文本文件?_Sql_R_Fixed Width - Fatal编程技术网

Sql 如何在R中写入固定宽度的文本文件?

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的 我希望

我有一个数据集,它存储在一个名为“new”的变量中,我正试图将它写入一个txt文件,每个列之间具有固定的指定宽度

我已经试过了

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)
。但是如果你不能告诉我们这个问题,我们就没有什么可以测试可能的解决方案。