小编Dr *_*eco的帖子

错误R Studio使用install.packages行编织HTML

我是RStudio的新用户,在使用.rmd文件和Knit HTML时遇到错误

如果我有一个install.packages行:

install.packages('ggplot2');
library(ggplot2);
Run Code Online (Sandbox Code Playgroud)

当我单击Knit HTML时,会返回错误:

contrib.url中的错误(repos,"source"):尝试在不设置镜像调用的情况下使用CRAN:... withVisible - > eval - > eval - > install.packages - > contrib.url执行暂停

我能够解决这个问题:

if (!require('ggplot2')) 
{
  install.packages('ggplot2');
  library(ggplot2);
}
Run Code Online (Sandbox Code Playgroud)

如果我正在编写.rmd,if (!require(每次安装新软件包时是否需要使用该行?有没有办法避免这种情况,所以我只能写install.packages(

r rstudio knitr r-markdown

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

解释printf中的'\n'("%s",字符串)

这段代码对我的品味有点奇怪.拜托,有人在乎解释原因吗?以及如何强制'\n'被解释为一个特殊的字符?

beco@raposa:~/tmp/user/foo/bar$ ./interpretastring.x "2nd\nstr"
1st
str
2nd\nstr
beco@raposa:~/tmp/user/foo/bar$ cat interpretastring.c
#include <stdio.h>

int main(int argc, char **argv)
{
    char *s="1st\nstr";

    printf("%s\n", s);
    printf("%s\n", argv[1]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

底线,意图是第二个字符串要打印成两行,就像第一行一样.这个程序是一个简化.真正的程序在使用文件读取时遇到了问题fgets(不是argv像这里那样的SO参数),但我认为在这里求解也会​​解决问题.

c string printf

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

find命令和反正则表达式

我正在寻找一种表达此命令的方法,该命令排除所有可执行文件,除了那些以".EXE"结尾的文件

我试图使用"find"命令和-exec来解决它.谢谢.

我尝试的命令和其他版本的命令不起作用:

find . -type f -regex "[^\.EXE$]" -printf "%f\n" -exec chmod a-x {} +
Run Code Online (Sandbox Code Playgroud)

谢谢任何帮助,Beco.


编辑:

为了找到正则表达式的"逆",我尝试了(更多)研究:

find . -type f ! -regex ".EXE$" -printf "%f\n" -exec chmod a-x {} +
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

regex exec find inverse

3
推荐指数
1
解决办法
5917
查看次数

避免使用bash命令中的临时文件

我试图避免t12.txt使用一些bash技巧创建一个临时文件(在示例中),但无济于事.

假设有两个文件,t1.txtt2.txt带有一些文本行.

命令工作示例:

$ cat t1.txt t2.txt > t12.txt
$ tac t2.txt t1.txt | tac | diff - t12.txt
Run Code Online (Sandbox Code Playgroud)

现在我试图避免使用任何东西创建t12.txt,从管道到奇怪的重定向.

我在不同的命令和测试中尝试过的命令是:$(cat t1.txt t2.txt)或者< <(cat t1.txt t2.txt).

这里有任何创意建议吗?TY.

linux bash

3
推荐指数
1
解决办法
676
查看次数

const指针修复变量变量

我无法弄清楚如何告诉C我想要一个不会移动的指针.它总是指向同一个数组.也就是说,数组成员不是常量,但数组本身是全局的,所以它处于固定位置.

所以,当我编码时:

#include <stdio.h>

int v[2]={0, 1};
const int *cpv=v;

int main(void)
{
    v[1]=2;     printf("%d\n", v[1]);
    *(cpv+1)=3; printf("%d\n", v[1]);
    cpv[1]=4;   printf("%d\n", v[1]);
}
Run Code Online (Sandbox Code Playgroud)

并得到这个错误:

constp.c: In function ‘main’:
constp.c:9: error: assignment of read-only location '*(cpv + 4u)'
constp.c:10: error: assignment of read-only location '*(cpv + 4u)'
Run Code Online (Sandbox Code Playgroud)

我知道编译器认为我需要const int v[2]使用a const int *iv.如何获得一个常量指针来完成这项工作?

如果你看到错误信息,我甚至没有移动指针(如pv++).我只是取消引用它错位了一些字节.

如果我这样做:

int *pv=cpv;
*(pv+1)=5;  printf("%d\n", v[1]);
printf("%p == %p !?\n", cpv, pv);
Run Code Online (Sandbox Code Playgroud)

我得到了这个警告,但它有效:

constp.c:9: warning: assignment discards qualifiers from pointer target type …
Run Code Online (Sandbox Code Playgroud)

c pointers const readonly variable-assignment

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

如何自定义窗口菜单(linux ubuntu)

我正在寻找一种方法来添加一个新的快捷方式(让我们说"杀死这个窗口")进入窗口菜单:

窗口菜单

在gnome/ubuntu下有可能吗?

谢谢!

PS.编辑以避免混淆.

linux ubuntu customization gnome menu

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

在没有被要求的情况下打电话给野牛

我有一个我正在写的语法,叫做portugol.文件名是基本的,但我选择调用我的c程序portugol.c.

所以,基本上,我必须这样做:

flex portugol.l      ==> lex.yy.c
bison -dy portugol.y ==> y.tab.c and y.tab.h
gcc y.tab.c lex.yy.c portugol.c -o portugol.bin -lm -ly  ==> portugol.bin
Run Code Online (Sandbox Code Playgroud)

(我也有portugol.h,但它与问题无关)

很长一段时间以来,我正在使用我称之为的shell脚本flexyagcc.sh.过程中没有错误.

所以现在我决定学习makefile.

我面临的问题是,由于一些奇怪的原因," bison -dy"我打电话后跟这个命令我没写:mv -f y.tab.c portugol.c

好吧,这破坏了我手工制作的源文件!

我尽我所能,但无法摆脱这个" mv".

我甚至做了一个sleep尝试过:

y.tab.c y.tab.h : portugol.y
    @echo --- bison -----------------------------------------------
    mv -f portugol.c ptg.c
    $(BISON) $(BFLAGS) portugol.y
    @echo --- bison sleeping --------------------------------------
    sleep 5
    -mv -f portugol.c y.tab.c
    -mv -f ptg.c portugol.c
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,我得到了以下事件(按此顺序): …

yacc lex makefile bison

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

'find'(命令)找不到-wholename

为什么这个命令有效:

/home/user1/tmp $ find ./../.. -wholename '.*/tmp/file.c' -exec echo '{}' \;
./../../user2/tmp/file.c
/home/user1/tmp $
Run Code Online (Sandbox Code Playgroud)

这个命令不起作用?(一无所获)

/home/user1/tmp $ find /home -wholename '.*/tmp/file.c' -exec echo '{}' \;
/home/user1/tmp $
Run Code Online (Sandbox Code Playgroud)

linux directory bash find

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