小编ter*_*don的帖子

为什么不是`printf`中定义的`float`的说明符?

它看起来像它可能是,有(至少在C99),可以适用于长度修改int:%hhd,%hd,%ld%lldsigned char,short,longlong long.甚至还有一个长度修饰符适用于double:%Lf均值long double.

问题是他们为什么省略float?按照模式,它可能是%hf.

c floating-point printf rationale c-standard-library

69
推荐指数
4
解决办法
3392
查看次数

ggplot geom_point(),颜色基于特定的离散值

我试图为三个值范围绘制三种不同颜色的数据点.例如:

library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec))
Run Code Online (Sandbox Code Playgroud)

以上产生:

在此输入图像描述

现在,我想修改它,使qseq值<17为黑色,17到19之间的值为黄色,高于19的值为红色.我尝试了各种方法,但似乎没有一种方法可行:

  • 取自这里

    ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) + 
    scale_fill_gradientn(colours=c("black","yellow","red"), 
    breaks=c(0,17,19), labels=format(c("0","17","19")))
    
    Run Code Online (Sandbox Code Playgroud)

    这会产生:

    在此输入图像描述

    因此,颜色条似乎是正确的,但实际上并未应用颜色.

  • ggplot2热图中给出的解决方案颜色为远程值的解决方案看起来很有希望,但我无法使用它们geom_point().

  • 各种类似的帖子也是如此,例如侧栏中列出的帖子.

我意识到我可能需要使用某种离散比例而不是scale_fill_gradientn我尝试使用scale_color_manual()失败:

ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(color = factor(qsec))) + 
scale_color_manual(values=c("black", "yellow","red")
Error: Insufficient values in manual scale. 30 needed but only 4 provided.
Run Code Online (Sandbox Code Playgroud)

我猜我会以某种方式使用cut()factor()但我似乎无法弄清楚如何.有什么建议?

r graph ggplot2

19
推荐指数
1
解决办法
4万
查看次数

SSH隧道:local => gateway => MySQL服务器

我需要访问我实验室远程服务器上的MySQL数据库.只有登录到远程网络上的网关服务器后,才能访问服务器:

local server => gateway server => MySQL server.
Run Code Online (Sandbox Code Playgroud)

我可以使用端口24222 ssh到网关.

我正在使用PERL DBI模块.这是我在实验室时用来连接的东西:

my $host="1.2.3.4";
my $database="dbname";
my $user="user";
my $pw="pass";
my $table="table";    
Run Code Online (Sandbox Code Playgroud)

我想我必须通过网关服务器建立到数据库服务器的隧道.我该怎么做呢?如果MySQL数据库在网关上,我可以像这样打开一个隧道:

$ ssh -f user@gateway -L 3307:127.0.0.1:3306 -N 
Run Code Online (Sandbox Code Playgroud)

如何修改它以通过网关上的开放端口24222隧道传输到1.2.3.4上的MySQL服务器?


更新:

使用@ anttir的答案我得到了如下工作.

  1. 设置隧道:

    $ ssh -fN -p 24222 user1@11.12.13.14 -L 3307:1.2.3.4:3306
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置脚本变量:

    my $host="127.0.0.1";
    my $port = 3307;
    
    Run Code Online (Sandbox Code Playgroud)

mysql linux ssh-tunnel

16
推荐指数
2
解决办法
1万
查看次数

打印对齐列的数据框(如R中所示)

我在R中有以下数据框:

> dframe
                Mean Median
Candidates     85.68     60
NonCands        9.21      4
Multi          27.48     17
Mono            4.43      3
Multi NonCands 22.23     15
Run Code Online (Sandbox Code Playgroud)

我想将它打印到一个文件中,并保持格式良好和对齐,如上所示.我用:

write.table(dframe,file="test",sep="\t", quote=F)
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

Mean    Median
Candidates  85.68   60
NonCands    9.21    4
Multi   27.48   17
Mono    4.43    3
Multi NonCands  22.23   15
Run Code Online (Sandbox Code Playgroud)

由于数据在R环境中正确显示格式,我认为将它写入具有相同格式的文件应该是微不足道的.显然我错了.我尝试过format()write.matrixMASS库一起玩,但都没有产生预期的结果.

我曾见过这样一些建议,这一个,但似乎都太复杂了,更重要的是,打印到一个文件时,不会产生期望的结果write.table().

那么,如何将我的数据框打印到文本文件中并使其看起来像在R中一样?


UPDATE

根据贾斯汀在下面的评论中提出的建议,我安装了gdata库并使用了write.fwf.这几乎是我需要的:

write.fwf(dframe,file="test",sep="\t", quote=F, rownames=T)
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

Mean    Median
Candidates      85.68   60
NonCands         9.21    4
Multi           27.48   17
Mono             4.43    3
Multi NonCands …
Run Code Online (Sandbox Code Playgroud)

r text-alignment dataframe output-formatting

10
推荐指数
2
解决办法
1万
查看次数

为什么Perl的glob()函数在给定没有通配字符的字符串时总是返回文件名?

我给Perl的glob函数提供了一个globs列表和一个字符串.球体按预期处理,但始终找到弦.例如:

$ ls
foo
$ perl -le '@files=glob("*bar"); print @files' ## prints nothing, as expected
$ perl -le '@files=glob("bar"); print @files'
bar
Run Code Online (Sandbox Code Playgroud)

如上所示,bar即使没有这样的文件,第二个示例也会打印出来.

我的第一个想法是它的行为就像shell一样,当没有可用的扩展时,一个glob(或被视为glob的东西)扩展到自己.例如,在csh(可怕的是,这是Perl的glob()功能似乎如下,请参阅下面的引用):

% foreach n (*bar*)
foreach: No match.

% foreach n (bar)
foreach? echo $n
foreach? end
bar                     ## prints the string
Run Code Online (Sandbox Code Playgroud)

但是,根据文档,glob应该返回文件名扩展(强调我的):

在列表上下文中,返回EXPR值的文件名扩展(可能为空)列表,例如标准的Unix shell/bin/csh.

那么为什么在传递给参数的参数中没有通配符时它会返回glob?这是一个错误还是我做错了什么?

perl glob

10
推荐指数
2
解决办法
852
查看次数

Perl的"not"运算符没有使用defined()函数按预期工作

以下代码段未按预期工作:

$k{"foo"}=1;
$k{"bar"}=2; 
if(not defined($k{"foo"}) && not defined($k{"bar"})){
    print "Not defined\n";
}
else{
    print "Defined"
}
Run Code Online (Sandbox Code Playgroud)

由于$ k {"foo"}和$ k {"bar"}都已定义,因此预期输出为"已定义".但是,运行代码会返回"未定义".

现在,玩弄代码我意识到在每个not defined()调用周围放置括号会产生所需的结果:

if((not defined($k{"foo"})) && (not defined($k{"bar"}))){print "Not Defined"}
Run Code Online (Sandbox Code Playgroud)

我想这与运算符优先级有关,但有人可以解释究竟发生了什么吗?

perl

9
推荐指数
1
解决办法
2万
查看次数

我可以使用 -v 将数组传递给 awk 吗?

我希望能够将数组变量传递给awk. 我指的不是 shell 数组,而是本机数组awk。我知道我可以像这样传递标量变量:

awk -vfoo="1" 'NR==foo' file
Run Code Online (Sandbox Code Playgroud)

我可以使用相同的机制来定义awk数组吗?就像是:

$  awk -v"foo[0]=1" 'NR==foo' file
awk: fatal: `foo[0]' is not a legal variable name
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上述几种变体,但它们都不适用于我的 Debian 上的 GNU awk 4.1.1。那么,有没有任何版本awkgawkmawk或其他任何东西),可以接受来自一个数组-v开关?

我知道我可以解决这个问题并且可以很容易地想到这样做的方法,我只是想知道是否有任何awk实现本身支持这种功能。

arrays awk gawk mawk

7
推荐指数
2
解决办法
4443
查看次数

运行一个产生 N 个线程的进程还是运行 N 个进程更快?

我意识到这在很大程度上取决于相关流程,但是否有经验法则?

假设我有一个名为的多线程程序progX,它提供一个命令行开关 ( --cpu) 来控制它可以使用的 CPU 数量。启动 40 个并行实例每个使用一个 CPU ( progX --cpu 1) 还是启动单个实例并告诉它使用 40 个 CPU ( progX --cpu 40)是否更快?

parallel-processing multithreading

6
推荐指数
1
解决办法
896
查看次数

错误:EACCES:权限被拒绝,打开“/root/.config/truffle/config.json”

无法更正尝试安装松露的 EACCESS 问题。

是的,我最初是通过 sudo 而不是 nvm 安装了 npm,但这已得到纠正 - 除非谁知道 - 根据网络。

这条路径实际上并不存在,所以我根据一个 git 问题创建了它:

/root/.config/truffle/

[root@home config]# ls -la |grep truffle
drwxrwxr-x. 2 root root   6 Jul 14 17:08 truffle

[user@home ~]$ nvm --version
0.34.0

$ npm -v
6.9.0
Run Code Online (Sandbox Code Playgroud)

分配完全权限node_modules

ll|grep node
drwxrwxrwx. 31 user user 4096 Jul 14 16:58 node_modules
Run Code Online (Sandbox Code Playgroud)

我尝试了此链接中的建议:安装 npm 模块时权限被拒绝

Ethereum SE 的用户在 Ubuntu问题上有这个问题

浏览以下链接并授予 package-lock 的完全权限,以防问题npm 通知创建了一个锁文件为 package-lock.json。你应该提交这个文件

尝试强制清除 npm 缓存。

这个 github 用户显然通过 …

npm centos7 truffle

6
推荐指数
2
解决办法
5969
查看次数

为什么4种不同的语言会给出4种不同的结果?

考虑一下(所有命令都在64位Arch Linux系统上运行):

所以,Perl,gawkR同意,bc和Pyhon 2.然而,在测试的6个工具之间,我得到了4个不同的结果.我知道这与整数很长的整数有关,但为什么不同的工具差别如此之大?我曾预料到这将取决于处理器处理大数字的能力,但它似乎取决于语言的内部特征(或错误).

有人可以解释幕后发生的事情吗?每种语言有哪些限制,为什么它们的表现如此不同?

python perl awk rounding long-integer

5
推荐指数
1
解决办法
222
查看次数