【发布时间】:2012-08-29 20:21:05
【问题描述】:
我有一个类似于这种格式的 lagre 数据框:
line1
line2<tab>value1
当它在 R 中使用 read.csv 读取时,它会被强制放入一个数据框中,如下所示:
V1<tab>V2
line1<tab>NA
line2<tab>value1
我可以用空字符串替换 NA,但是当我使用 write.table 编写时,我在输出文件的第 1 行之后得到一个制表符和空白空间。
如何使输出与输入的格式相同,即删除尾随的制表符空格
附加示例文件:
#Sample SGA file format
@HD VN:1.0.0 IA:NA
@PL NM:TEST
1 1 705 50947 YDL185W YOR202W - - -
1 2 377 50947 YDL185W YOR202W - - -
1 3 317 50947 YDL185W YOR202W - - -
...
@SP CF:ORF,IGNA
TEST 1
TEST2 1
头部(输入(数据))
structure(list(V1 = c("#Sample SGA file format", "@HD",
"@PL", "1", "1", "1"), V2 = c("", "VN:1.0.0", "NM:TEST", "1",
"2", "3"), V3 = c("", "IA:NA", "", "705", "377", "317"), V4 = c(NA,
NA, NA, 50947L, 50947L, 50947L), V5 = c("", "", "", "YDL185W",
"YDL185W", "YDL185W"), V6 = c("", "", "", "YOR202W", "YOR202W",
"YOR202W"), V7 = c("", "", "", "-", "-", "-"), V8 = c("", "",
"", "-", "-", "-"), V9 = c("", "", "", "-", "-", "-")), .Names = c("V1",
"V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9"), row.names = c(NA,
6L), class = "data.frame")
和str(数据)
'data.frame': 1541 obs. of 9 variables:
$ V1: chr "#Sample SGA file format" "@HD" "@PL" "1" ...
$ V2: chr "" "VN:1.0.0" "NM:TEST" "1" ...
$ V3: chr "" "IA:NA" "" "705" ...
$ V4: int NA NA NA 50947 50947 50947 50947 50947 50947 50947 ...
$ V5: chr "" "" "" "YDL185W" ...
$ V6: chr "" "" "" "YOR202W" ...
$ V7: chr "" "" "" "-" ...
$ V8: chr "" "" "" "-" ...
$ V9: chr "" "" "" "-" ...
【问题讨论】:
-
你可以在这里
dput(yourdata)或其中的一部分。听起来混乱的一部分是NAvs 空白。 R 中的数字没有空格,而是用 NA 表示。如果您强制NA为空白字符串,则整列将转换为字符。但是,一旦将数据读入 R,我就无法确定。您也可以使用str(yourdata)查看数据 -
为什么将数据存储在数据框中?它似乎不是一个数据框(即一个表),所以也许你可以将它存储在一个列表中。
-
@Justin 我已经附加了一些数据。 GaborCsardi 我的数据中嵌入了 2 个数据帧,因此我提取数据帧,对其进行处理并在完成后将它们放回。
-
请使用
dput(yourdata)或dput(head(yourdata)),这样我们就可以在R中看到它的结构。您也可以向我们展示str(yourdata)的输出和空工作区中的完整代码,直到您拥有加载的数据。否则,仍然很难调试您向我们展示的内容。 -
@Justin 你去。加载数据的代码并不简单。它以 read.csv 开头,其余部分是使用标题标签 '@' 提取数据帧,验证列/数据。这是一个非常大的管道的一部分,除了 read.csv 之外,没有太多可以为您提供的信息