我觉得我应该提到我是化学工程师而不是训练有素的程序员(但我愿意学习).
我处理了很多光谱,这些光谱基本上是由光谱仪专用软件产生的x,y坐标的ASCII文件.用于分析的标准软件是来自Originlab的 Origin,但我发现它不是用户友好的,它具有比我需要的更多的功能,并且它不是免费的.
所以我希望有一种方法来开发matplotlib的前端,允许使用带有GUI的matplotlib.我希望能够从ASCII文件中读取和绘制数据,在图中放大和缩小,调用峰值检测和拟合函数等脚本,其中可以在GUI中输入功能特定参数.
我很困惑从哪里开始,所以问题的确是:为matplotlib开发前端/ GUI的最简单方法是什么,它允许我编写上面提到的东西?此外,最终,跨平台应用程序会很好,因为我的小组中的许多人都在Windows中工作.
一个非常简单的R脚本将升序行索引添加到文本文件"0.txt",并为其添加标题"time".之后,数据被写入文件"0-edit.txt"
data<-read.table("0.txt", header=TRUE,sep=",",row.names= NULL);
colnames(data)[1] = "time"
write.table(data,quote=FALSE,sep=", ","0-edit.txt");
Run Code Online (Sandbox Code Playgroud)
假设我在同一文件夹中有4个名为0.txt,1.txt,2.txt,...的文件,我如何使用计数器(或其他东西)在我的脚本中迭代这些文件名?
我有11个不同长度的列表,导入R为p1,p2,p3,...,p11.现在我想从所有列表中获取rollmean(库TTR)并将结果命名为p1y,p2y,...,p11y.
这似乎是一个循环的工作,但我读到这通常不是R中的好习惯.我尝试了一些(愚蠢的)像
sample=10
for (i in 1:11){
paste("p",i,"y",sep="")<-rollmean(paste("p",i,sep=""),sample)
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.我也尝试将它与assign()结合使用,但据我所知,assign只能接受一个变量和一个值.
一如既往地让我觉得我错过了R的一些基本功能.
我遇到了一个有趣但相当讨厌的问题.
我正在尝试集成从数据集计算的函数.可在此处找到数据:链接到sample.txt.
我首先为我的数据拟合一条线.这可以线性approxfun
或非线性地完成splinefun
.在我下面的例子中,我使用后者.现在,当我尝试集成拟合函数时,我遇到了错误
maximum number of subdivisions reached
但是当我增加细分时,我得到了
roundoff error
从我的示例代码中的值,您可以看到对于此特定数据集,阈值为754-> 755.
我的同事在Matlab中集成这个数据集没有问题.有没有办法操纵我的数据进行整合?R中还有另一种数值积分方法吗?
data<-read.table('sample.txt',sep=',')
colnames(data)<-c('wave','trans')
plot(data$wave,data$trans,type='l')
trans<- -1 * log(data$trans)
plot(data$wave,trans,type='l')
fx.spline<-splinefun(data$wave,trans)
#Try either
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave))
#Above: Number of subdivision reached
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave),subdivisions=754)
#Above: Number of subdivision reached
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave),subdivisions=755)
#Above: Roundoff error
Run Code Online (Sandbox Code Playgroud) 假设我的数据按行排列,并且我想从中创建图表(x,y 散点图)。
date 1.1. 1.2. 1.3. 1.4 1.5
set1 12 36 12 23 33
set2 44 22 11 1 13
set3 54 5 56 56 34
set4 1 2 6 12 33
Run Code Online (Sandbox Code Playgroud)
如何将 set1、set2 和 set4 而不是 set3 添加到图表中,而不必一个接一个地选择它们?
对于 x 范围(日期),我可以做
Dim xrange As Range
Set xrange = Application.InputBox("select x-range", "Get Range", Type:=8)
Run Code Online (Sandbox Code Playgroud)
但是对数据集(选择多行)做同样的事情是行不通的,因为散点图中的每个系列都需要一个单独的范围
ActiveChart.SeriesCollection(1).XValues = xrange
ActiveChart.SeriesCollection(1).Values = "=Sheet1!$4:$4"
Run Code Online (Sandbox Code Playgroud)
但我有多个数据集的选择。我需要一种方法来从我的输入框选择中拆分范围并将它们写入唯一变量。然后我会使用上述方法为每个 xrange + 变量对添加一个新系列。
有没有办法做到这一点?
一个潜在的答案不需要坚持我上面发布的内容,欢迎提出任何建议。
我有一个包含几千个文件的文件夹,我想根据文件名中的字符串将它们移动到子文件夹中.这些文件都有类似的结构
一些-run1_001.txt
一些-run22_1243.txt
所以我尝试了以下脚本,以便将包含"run1"的所有文件移动到子文件夹r1和子文件夹r22中的所有"run22"文件(依此类推),但它没有那样工作,我得到一条消息"文件X与文件X"相同.
#!bin/bash
for i in {1..39}
do
foldername=r$i
#echo "$foldername"
mkdir $foldername
find . -type f -name "*run$i_*" | xargs -i mv {} $foldername/
done
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?