我想使用data.table
包R
来计算另一组列的许多列的列方式.我知道如何为几列做这个,我在下面提供一个例子.但是,在我的非玩具示例中,我有几十个变量我想这样做,我想找到一种方法从列名称的向量中执行此操作.这可能吗?
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中的两个数学函数上相乘或执行任何二元运算?
我想尝试类似的东西:
f<-function(x){x+2}
g<-function(x){x}
Run Code Online (Sandbox Code Playgroud)
我希望h = f * g
,最终融入h
.我需要做很多次这样的事情,所以h
手动输入不是一个可行的选择.
我有一个功能f <- function(x){x}
。我想插入该行,x <- 2*x
使其f
最终成为
function(x){
x <- 2*x
x
}
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用body()
,但到目前为止我只知道如何更换整个身体,这对于我的真正目的来说并不实用。
在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)的完全不同的输出.有没有人知道为什么会这样?
当我尝试使用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,群集是否终止,我的计算机是否恢复到能够使用其所有核心的正常状态?
我试图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)