我在linux中使用R,只在命令行中使用.
一段时间后回到项目中,我忘记了我使用的变量名,并且R命令历史记录不包含它们.
我似乎记得有一个命令列出了所有用户定义的变量,但不记得它是什么,并且无法在网上找到它.
如何在R中列出所有用户定义的变量?
有没有办法强制*nix命令"date"以独立于本地的特定格式输出?例如,如果我今天打电话给"date -u",我会在美国机器上得到:
Mon Oct 15 13:15:29 UTC 2012
Run Code Online (Sandbox Code Playgroud)
但在德国的机器上我得到:
Mo 15. Okt 13:15:31 UTC 2012
Run Code Online (Sandbox Code Playgroud) 在R中,我喜欢使用反向搜索(ctrl + r)来重做不常见但复杂的命令而不使用脚本.通常,我会在其间执行许多其他命令,命令历史记录会丢弃旧命令.如何更改命令历史记录的默认长度?
这是一个最小的工作示例:
啊:
class A{
static int a_member_function();
};
Run Code Online (Sandbox Code Playgroud)
A.cpp
#include "A.h"
int A::a_member_function(){return 5;}
int main(){ return 1;}
Run Code Online (Sandbox Code Playgroud)
这段代码编译并运行,但在我看来:
static int A::a_member_function(){return 5;}
Run Code Online (Sandbox Code Playgroud)
可以很容易地用来定义类A的静态成员函数.实际上,似乎它实际上对于满足这个要求是非常有用的,因为它会提醒读者.cpp文件a_member_function是静态的.
但是,这显然不起作用:
error: cannot declare member function ‘static int A::a_member_function()’ to have static linkage [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
那为什么不起作用呢?这个决定背后的原因是什么?
假设我有一个R脚本:
library('nnet')
something <- runif(50);
print(something)
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行此脚本时,它会打印:
> library('nnet')
> something <- runif(5);
> print(something)
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019
Run Code Online (Sandbox Code Playgroud)
我希望它只打印:
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何做到这一点.sink("/ dev/null")没有做任何事情,手动重定向stderr没有做任何事情,我找不到任何有用的信息.
忽略有时候有更好的非宏方式来做这件事(遗憾的是我有充分的理由),我需要使用宏编写一大堆通用代码.本质上是一个宏库,它将为某些预先指定的类型生成大量函数.
为了避免破坏大量预先存在的单元测试,库必须做的一件事是,对于每种类型,在所有大写字母中生成该类型的名称以进行打印.例如,类型"标志"必须打印为"标记".
我可以手动写出每种类型的常量,例如
#define flag_ALLCAPSNAME标志
但这并不理想.我希望能够以编程方式执行此操作.
目前,我一起攻击了这个:
char capname_buf[BUFSIZ];
#define __MACRO_TO_UPPERCASE(arg) strcpy(capname_buf, arg); \
for(char *c=capname_buf;*c;c++)*c = (*c >= 'a' && *c <= 'z')? *c - 'a' + 'A': *c;
__MACRO_TO_UPPERCASE(#flag)
Run Code Online (Sandbox Code Playgroud)
我在某种程度上做了我想做的事情(即在这段代码之后,capname_buf将"FLAG"作为其内容),但我更喜欢一种允许我使用宏来定义字符串文字的解决方案,避免了对此的需要愚蠢的缓冲.
我看不出怎么做,但也许我错过了一些明显的东西?
我有一个可变的foreach循环宏写(像这一个),但我不能改变#flag生成的字符串文字的内容,并且无论如何,我的循环宏需要一个字符指针列表来迭代(即它迭代列表,而不是索引等.
思考?
开始写这个问题,然后想出答案.要把它放在这里作为后代,因为很难找到答案.
我正在尝试使用e1071包中的naiveBayes分类器.它似乎可以毫无困难地为新数据生成预测,但实际上我需要对新数据类的概率估计.
例:
> model <- naiveBayes(formula=as.factor(V11)~., data=table, laplace=3)
> predict(model, table[,1:10])
[1] 4 4 4 4 4 4 4 4 1 1 1 3 3 1 1
> predict(model, table[,1:10], type="raw")
1 2 3 4
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA …
Run Code Online (Sandbox Code Playgroud) 以下代码无法编译:
fn main() {
let x = (-5i32).abs();
let z: u32 = x;
}
Run Code Online (Sandbox Code Playgroud)
随着消息:
error[E0308]: mismatched types
--> src/main.rs:4:18
|
4 | let z: u32 = x;
| ^ expected u32, found i32
Run Code Online (Sandbox Code Playgroud)
阅读文档,它看起来选择i32
源于i32::min_value()
没有积极表现的事实i32
.然而,这将有积极的表现u32
,可以两次表示数字大.
我正在学习这门语言,并想了解为什么做出某些设计决定,以便养成良好的习惯.我觉得这个令人困惑.有人可以解释为什么它以这种方式工作而不是只返回一个u32
,这似乎是语义上正确的类型?
使用'plot'命令在R中生成绘图,并将左侧x轴限制设置为零,例如,
plot(x=c(1:10), y=c(1:10), xlim=c(0,10), ylim=c(0,10))
Run Code Online (Sandbox Code Playgroud)
R,由于我不明显的原因,在点(0,0)和左下角(也在顶部)之间放置了一堆额外的空间.
我可以通过手动猜测偏移来获得我想要的图形,并相应地调整左下轴限制:
plot(x=c(1:10), y=c(1:10), xlim=c(0.38,10), ylim=c(0.38,10))
Run Code Online (Sandbox Code Playgroud)
但问题是,我必须手动为每个图表执行此操作,这似乎过多.
是否有用于删除此边距的par-type设置?
这本质上是这个问题的一个受限制的版本.
假设我们有一个非常大的文本文件,包含大量的行.
我们需要从文件中随机选择一条线,具有统一的概率,但是存在约束条件:
我的第一个想法是使用lstat()
调用以字节为单位获取总文件大小.fseek()
然后可以用来直接访问随机字节偏移量,将类似O(1)的内容访问到文件的随机部分.
问题是我们不能再做一些事情,比如读到下一个换行符并将其称为一天,因为这会产生偏向长线的分布.
我解决这个问题的第一个想法是读取直到第一个"n"换行符(如果需要,回到文件的开头),然后从这个较小的集合中选择一个具有统一概率的行.可以安全地假设文件的内容是随机排序的,因此这个子样本在长度上应该是统一的,并且,由于它的起始点是从所有可能的点统一选择的,所以它应该代表从文件中统一选择的整个.所以,在伪C中,我们的算法看起来像:
lstat(filepath, &filestat);
fseek(file, (int)(filestat.off_t*drand48()), SEEK_SET);
char sample[n][BUFSIZ];
for(int i=0;i<n;i++)
fgets(sample[i], BUFSIZ, file); //plus some stuff to deal with file wrap around...
return sample[(int)(n*drand48())];
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个特别优雅的解决方案,我并不完全相信它会是统一的,所以我想知道是否有更好的方法来做到这一点.有什么想法吗?
编辑:进一步考虑,我现在很确定我的方法不统一,因为起点更可能在更长的单词内,因此不统一.整蛊!