【发布时间】:2013-04-03 17:21:16
【问题描述】:
在合并/连接/组合/绑定等方面需要帮助
- 我有几个 ascii 文件,每个文件都定义一个变量,我已将其转换为单列数组
我有许多变量的列数据,所以我需要像R 那样执行列绑定并将其设为一个文件。
我可以在R 中做同样的事情,但是文件太多了。能够用一个代码完成这将有助于节省大量时间。
使用以下代码,perl 新手,需要帮助。
@filenames = ("file1.txt","file2.txt");
open F2, ">file_combined.txt" or die;
for($j = 0; $j< scalar @filenames;$j++){
open F1, $filenames[$j] or die;
for($i=1;$i<=6;$i++){$line=<F1>;}
while($line=<F1>){
chomp $line;
@spl = split '\s+', $line;
for($i=0;$i<scalar @spl;$i++){
print F2 "$spl[$i]\n";
paste "file_bio1.txt","file_bio2.txt"> file_combined.txt;
}
}
close F1;
}
这里的输入文件是光栅的 Ascii 文本文件。它们看起来像这样
32 12 34 21 32 21 22 23
12 21 32 43 21 32 21 12
上面提到的没有粘贴语法的代码将这些文件转换成一个列
32
12
34
21
32
21
22
23
12
21
32
43
21
32
21
12
The output should look like this
12 21 32
32 23 23
32 21 32
12 34 12
43 32 32
32 23 23
32 34 21
21 32 23
每一列代表一个不同的 ascii 文件。 我需要将大约 15 个这样的 ascii 文件放入一个数据帧中。我可以在 R 中做同样的事情,但它会消耗大量时间,因为文件和感兴趣区域的数量太多并且文件也有点大。
【问题讨论】:
-
假设您在 *nix 环境中使用
join怎么样?另外,file_bio1.txt 和 file_bio2.txt 是从哪里来的?您是否也尝试在不使用反引号的情况下调用paste? -
我不太清楚你要做什么?
-
不,那是打字错误,我的意思是写 file1.txt 等等...当我尝试代码时,它给了我一个错误,在 EOF 之前的任何地方都找不到字符串终止符(第 12 行).将尝试加入
-
请编辑这个;显示示例输入文件和预期的输出。
标签: perl merge concatenation