它看起来像它可能是,有(至少在C99),可以适用于长度修改int:%hhd,%hd,%ld和%lld指signed char,short,long和long long.甚至还有一个长度修饰符适用于double:%Lf均值long double.
问题是他们为什么省略float?按照模式,它可能是%hf.
我试图为三个值范围绘制三种不同颜色的数据点.例如:
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()但我似乎无法弄清楚如何.有什么建议?
我需要访问我实验室远程服务器上的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的答案我得到了如下工作.
设置隧道:
$ ssh -fN -p 24222 user1@11.12.13.14 -L 3307:1.2.3.4:3306
Run Code Online (Sandbox Code Playgroud)设置脚本变量:
my $host="127.0.0.1";
my $port = 3307;
Run Code Online (Sandbox Code Playgroud)我在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) 我给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?这是一个错误还是我做错了什么?
以下代码段未按预期工作:
$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)
我想这与运算符优先级有关,但有人可以解释究竟发生了什么吗?
我希望能够将数组变量传递给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。那么,有没有任何版本awk(gawk,mawk或其他任何东西),可以接受来自一个数组-v开关?
我知道我可以解决这个问题并且可以很容易地想到这样做的方法,我只是想知道是否有任何awk实现本身支持这种功能。
我意识到这在很大程度上取决于相关流程,但是否有经验法则?
假设我有一个名为的多线程程序progX,它提供一个命令行开关 ( --cpu) 来控制它可以使用的 CPU 数量。启动 40 个并行实例每个使用一个 CPU ( progX --cpu 1) 还是启动单个实例并告诉它使用 40 个 CPU ( progX --cpu 40)是否更快?
无法更正尝试安装松露的 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 用户显然通过 …
考虑一下(所有命令都在64位Arch Linux系统上运行):
Perl(v5.24.0)
$ perl -le 'print 10190150730169267102/1000%10'
6
Run Code Online (Sandbox Code Playgroud)awk (GNU Awk 4.1.3)
$ awk 'BEGIN{print 10190150730169267102/1000%10}'
6
Run Code Online (Sandbox Code Playgroud)R(3.3.1)
> (10190150730169267102/1000)%%10
[1] 6
Run Code Online (Sandbox Code Playgroud)bc
$ echo 10190150730169267102/1000%10 | bc
7
Run Code Online (Sandbox Code Playgroud)Python 2(2.7.12)
>>> print(10190150730169267102/1000%10)
7
Run Code Online (Sandbox Code Playgroud)Python 3(3.5.2)
>>> print(10190150730169267102/1000%10)
8.0
Run Code Online (Sandbox Code Playgroud)所以,Perl,gawk并R同意,bc和Pyhon 2.然而,在测试的6个工具之间,我得到了4个不同的结果.我知道这与整数很长的整数有关,但为什么不同的工具差别如此之大?我曾预料到这将取决于处理器处理大数字的能力,但它似乎取决于语言的内部特征(或错误).
有人可以解释幕后发生的事情吗?每种语言有哪些限制,为什么它们的表现如此不同?