小编Bio*_*roo的帖子

R data.table:许多列的意思

我想使用data.tableR来计算另一组列的许多列的列方式.我知道如何为几列做这个,我在下面提供一个例子.但是,在我的非玩具示例中,我有几十个变量我想这样做,我想找到一种方法从列名称的向量中执行此操作.这可能吗?

library(data.table)

# creates data table
dfo <- data.frame(bananas = 1:5, 
             melonas = 6:10,
             yeah = 11:15,
             its = c(1,1,1,2,2)
             )
dto <- data.table(dfo)

# gets column means by 'its' column
dto[,
.('bananas_mean' = mean(bananas),
  'melonas_mean' = mean(melonas),
  'yeah_mean' = mean(yeah)
  ),
by = .(its)]
Run Code Online (Sandbox Code Playgroud)

r data.table

8
推荐指数
2
解决办法
8811
查看次数

乘以两个函数

有没有人知道如何在R中的两个数学函数上相乘或执行任何二元运算?

我想尝试类似的东西:

f<-function(x){x+2}
g<-function(x){x}
Run Code Online (Sandbox Code Playgroud)

我希望h = f * g,最终融入h.我需要做很多次这样的事情,所以h手动输入不是一个可行的选择.

r function

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

如何将表达式插入到R中的函数体中

我有一个功能f <- function(x){x}。我想插入该行,x <- 2*x使其f最终成为

function(x){
    x <- 2*x
    x
}
Run Code Online (Sandbox Code Playgroud)

我知道我应该使用body(),但到目前为止我只知道如何更换整个身体,这对于我的真正目的来说并不实用。

r

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

为什么optim()的结果取决于初始值?

在R中,我使用函数optim()来查找两个变量的目标函数的最小值.我正在使用的真正目标函数非常复杂,所以我试着熟悉一个更简单的目标函数.运行optim()的最简单方法是optim(par,function),其中par是算法初始值的向量.我发现我得到的答案在很大程度上取决于我输入的初始值.但是,我使用的函数非常简单,我担心我误解了optim()的输入或输出.

我使用的目标函数是:

f <- function(x){
    abs(x[1])*abs(x[2])
}
Run Code Online (Sandbox Code Playgroud)

当我运行时optim(c(-1.2,1),f),optim(c(-1.2,10),f)我获得了最佳参数(par)和最小值(value)的完全不同的输出.有没有人知道为什么会这样?

r mathematical-optimization

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

如何检查stopCluster(R)是否有效

当我尝试使用stopCluster从我的工作区中删除一个集群时,它似乎不起作用.以下是我正在使用的代码.

> cl <- makeCluster(3)
> cl
socket cluster with 3 nodes on host ‘localhost’
> stopCluster(cl)
> cl
socket cluster with 3 nodes on host ‘localhost’
Run Code Online (Sandbox Code Playgroud)

请注意,cl在我应该删除它之后,该命令仍被称为具有3个节点的套接字群集.我不应该得到一个错误object cl is not found吗?我怎么知道我的群集实际上已被删除?一个相关的问题:如果我关闭R,群集是否终止,我的计算机是否恢复到能够使用其所有核心的正常状态?

parallel-processing r

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

如何有条件地使用命令“with”而不重复代码

我试图with在执行代码块之前使用,但前提是满足条件,但(至少常见)的用法with似乎不支持这一点,除非我复制该代码块。

更具体地说,我知道我可以执行以下操作:

if condition:
    with blah_blah():
        my_code_block
else:
    my_code_block
Run Code Online (Sandbox Code Playgroud)

但这在开发过程中并不令人满意,因为我所做的任何更改都my_code_block必须进行两次。我想做的(概念上)是:

if condition:
    with blah_blah():
else:
    my_code_block
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。有办法完成我想做的事情吗?

对于任何对我的特定用途感兴趣的人,我正在尝试编写在 pytorch 中运行一批示例的代码,如果我处于评估模式,则使用 torch.no_grad() ;如果我处于训练模式,则不使用 torch.no_grad() 。所以我想做的就变成了

if mode == 'eval':
    with torch.no_grad():
else:
    run_batch(features, labels)
Run Code Online (Sandbox Code Playgroud)

python with-statement pytorch

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