我正在尝试在R中生成直方图,y为对数标度.目前我这样做:
hist(mydata$V3, breaks=c(0,1,2,3,4,5,25))
Run Code Online (Sandbox Code Playgroud)
这给了我一个直方图,但是0到1之间的密度是如此之大(大约一百万个值的差异),你几乎无法看出任何其他的条形.
然后我尝试过:
mydata_hist <- hist(mydata$V3, breaks=c(0,1,2,3,4,5,25), plot=FALSE)
plot(rpd_hist$counts, log="xy", pch=20, col="blue")
Run Code Online (Sandbox Code Playgroud)
它给了我一个我想要的东西,但是底部显示了值1-6而不是0,1,2,3,4,5,25.它还将数据显示为点而不是条形.barplot工作,但后来我没有任何底轴.
最近,我决定在我的代码上更频繁地使用Perl :: Critic.在Perl编程近7年后,我已经习惯了大部分Perl最佳实践,但我知道总有改进的余地.有一件事让我烦恼的是,Perl :: Critic并不喜欢我为子程序解包@_的方式.举个例子:
sub my_way_to_unpack {
my $variable1 = shift @_;
my $variable2 = shift @_;
my $result = $variable1 + $variable2;
return $result;
}
Run Code Online (Sandbox Code Playgroud)
这就是我一直以来的做法,而且,正如PerlMonks和Stack Overflow所讨论的那样,它也不一定是邪恶的.
将上面的代码段更改为...
sub perl_critics_way_to_unpack {
my ($variable1, $variable2) = @_;
my $result = $variable1 + $variable2;
return $result;
}
Run Code Online (Sandbox Code Playgroud)
...也有效,但我发现它更难阅读.我也读过Damian Conway的书Perl Best Practices,我真的不明白我的首选解包方法是否属于他的建议,以避免@_直接使用,正如Perl :: Critic所暗示的那样.我一直认为康威在讨论如下的肮脏:
sub not_unpacking {
my $result = $_[0] + $_[1];
return $result;
}
Run Code Online (Sandbox Code Playgroud)
上面的例子很糟糕,很难阅读,我永远不会考虑在一段生产代码中编写它.
简而言之,为什么Perl …
我有一个项目,我在多个服务器上点击一堆自定义Windows性能计数器并将它们聚合到一个数据库中.如果服务器出现故障,我想跳过它,继续我的一天.
目前我正在检查服务器是否处于活动状态,通过在DirectoryInfo共享中查看我将要在稍后的过程中查看,然后检查.Exists属性.这是我当前用于测试的代码片段:
DirectoryInfo di = new DirectoryInfo(machine.Share_Path);
if (!di.Exists)
{
log.Warn("Could not access " + machine.Name + "! Maybe its down?");
continue; // Skips to the next server in my loop where this snippet exists.
}
Run Code Online (Sandbox Code Playgroud)
这有效,但它很慢.di.Exists位平均需要大约68秒才能完成其工作,理想情况下我需要在一秒钟内知道服务器是否可访问.Ping也不是一种选择,因为服务器可以ping通但不能在我们的环境中"活动".
我对.NET世界仍然很新鲜,所以我对人们可以提供的任何建议持开放态度.
提前致谢.
-Weegee