【发布时间】:2014-02-25 10:34:10
【问题描述】:
我正在用 Perl 编写一个 CGI 脚本,其中包含一段生成图形的嵌入式 R 脚本。原始数据文件名未知,因为它已由 CGI 脚本上传并存储在名为 $filename 的 Perl 变量中。
我的问题是我现在想使用 read.table() 在 R 中打开该文件。我正在使用Statistics::R,所以我尝试过:
my $R = Statistics::R->new();
$R->set('filename',$filename);
my $out1 = $R->run(
q`rm(list=ls())`,
# Fetch data
q`setwd("/var/www/uploads")`,
q`peakdata<-read.table(filename, sep="",col.names=c("mz","intensity","ionsscore","matched","query","index","hit"))`,
q`attach(peakdata)` ...etc
只有在尝试在 read.table 中打开文件之前,我将 $filename 更改为静态的并且已知为 'data.txt' 时,我才能让它工作 - 有没有办法让我打开带有变量的文件要名字吗?
提前谢谢你。
【问题讨论】:
-
您指的是您正在使用的唯一行
$filename,即$R->set('filename',$filename);,还是您打错字并表示run()命令中的一个字符串,您在其中输入filename(没有美元符号)。 -
基本上我希望 R 读取一个字符串变量,例如
$filename,因为 R 将处理的数据将位于动态命名的数据框中。我知道 R 无法识别诸如 $ 或 @ 之类的符号,但有解决方法吗? -
“/var/www/uploads”中有多少个文件?你想读的文件的扩展名是什么?
-
许多人犯的一个非常常见的错误是,他们认为阅读问题的人知道他们无法知道的事情。例如,您正在使用这个模块是什么,如何使用它,应该如何使用它,您所说的“将 $filename 设置为静态”是什么意思(它不是已经设置为静态的吗?)。而且,你没有回答我的问题。
-
不,我明白了,但很难正确表达。我正在编写的 CGI 脚本将被多次访问,并且可能同时访问。该脚本的重点是使用上传的数据文件(进入“/var/www/uploads”)绘制图形 - 因此该目录中可能有多个文件。我想使用 R 绘制图形。脚本上传的文件名存储在perl变量
$filename中。R无法读取此变量,因此不知道在read.table中打开哪个文件。我正在尝试将$filename中存储的信息转换为格式.. .