我正在尝试使用R中的optim函数来优化模型中的三个参数,但无法弄清楚如何使用"优化"函数来搜索一系列值.我尝试使用for循环来做这个,这是我尝试中最成功的但是由于某种原因似乎停在355的值,理想情况下我想尝试更高的组合.除此之外,我尝试编写多次调用optim的函数,尝试向量化并尝试将列表值放入optim中的"par"参数中,但是所有这些尝试都产生了错误消息
"unable to evaluate at initial parameters".
Run Code Online (Sandbox Code Playgroud)
很长的任何人都知道如何使用optim函数搜索参数的一系列值,因为"优化"函数会???
任何帮助或指示将非常感谢!!!
我的代码看起来像:它是相应比例的三个最大似然函数,然后是三次尝试使用optim!
rm(list=ls())
load('Dat.RData')
mean(dat)
var(dat)
loglike<-function(par,dat,scale)
{ ptp<-dat[1:length(dat)-1]
ptp1<-dat[2:length(dat)]
r<-par['r']
k<-par['k']
sigma<-par['sigma']
if(scale=='log')
{
return(sum(dnorm(log(ptp1)-log(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
if (scale=='sqrt')
{
return(sum(dnorm(sqrt(ptp1)-sqrt(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
if (scale=='linear')
{
return(sum(dnorm(ptp1-ptp*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
}
sqrts<-c()
for(i in 1:4000){
sqrts[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='sqrt',method='Nelder-Mead',control=list(fnscale=-1))
}
logs<-c()
for(i in 1:4000){
logs[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='log',method='Nelder-Mead',control=list(fnscale=-1))
}
lins<-c()
for(i in 1:4000){
lins[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='linear',method='Nelder-Mead',control=list(fnscale=-1))
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!!
我正在尝试根据另一个列表中的序列规则 n(n+1)/2 打印出一些值,到目前为止:
for i in range(0,5):
print LHS[(i(i+1))/2]
Run Code Online (Sandbox Code Playgroud)
为什么这行不通但没问题print LHS[i]?
然而,这引发了标题中的错误。我不明白为什么这在 Python 中不起作用。
如果有人可以帮助我将不胜感激!!
我想知道在VIM中是否有办法只保留一定范围内的行,即说我想在文件中仅保留1:20行,并丢弃其他所有内容.更好的是,我想保留1-20和40-60行是否有办法做到这一点?
有没有办法在不手动删除内容的情况下执行此操作?
我有一个数据帧列表,我正在尝试使用lapply方法更改第一个colname
frames<-lapply(frames,function(x){ colnames(frames[[x]])[1]<-"date"})
Run Code Online (Sandbox Code Playgroud)
正在返回错误
Error in `*tmp*`[[x]] : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它会产生这个错误,因为我的理解是这应该适用
colname[1]<-"date"
Run Code Online (Sandbox Code Playgroud)
到列表中的每个数据框
如果有人能告诉我这个错误的根源,我将非常感激!
如果我有两组坐标,其中 x 和 y 代表圆心,大小代表圆半径,我将如何在 ggplot2 中用它们绘制圆?我看到了这个问题,但它是关于绘制一个圆圈,我找不到使用散点图复制它的方法。
示例数据:
x y sizes
0.95285914 0.06596914 0.8868900
-1.59822942 0.71052036 2.3087498
0.39216559 0.58428603 0.1921204
0.16559318 -0.99303562 1.1586288
-0.43047728 -0.96649463 0.5360174
-0.73746484 -0.21143717 0.5260277
0.58779207 0.08073626 0.5070558
0.74936811 0.54462816 0.2047399
-0.01587290 -0.14835109 0.1324782
-0.06573365 0.33317857 0.3989122
Run Code Online (Sandbox Code Playgroud) 嗨我刚才有一个关于使用多个函数编写更快的R脚本的快速问题:假设每个示例中的内容完全相同,以下哪个会运行得更快?功能内的功能即
function(args)
{
function_using_previous_function_output(args)
{ manipulation of arguments}
}
Run Code Online (Sandbox Code Playgroud)
将东西传递给彼此之外的函数:
function(args)
{return(output}
}
function_using_previous_function_output(output)
{
manipulation of arguments
}
Run Code Online (Sandbox Code Playgroud)
这些风格或优化是否有最佳实践?
非常感谢!
我有一个csv列表列表,如:
[[0, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]]
Run Code Online (Sandbox Code Playgroud)
我想要做的是对每个单独的列表求和,即创建一个由每个逗号分隔变量求和组成的新列表,并检查它们是否等于某个值,即:
检查[0 + 0,0 + 2,1 + 1,2 + 0 .....等于某个数字
我已经达到了:
if sum(gcounter)==3:
gamma=True
print(gamma)
else:
pass
Run Code Online (Sandbox Code Playgroud)
我已经尝试了sum(int ...,并尝试使用for循环,但每次尝试不同的方法时它都会抛出相同的错误TypeError:不支持的操作数类型为+:'int'和'list'所以它是sum函数的一个问题
试图解决这个问题坦率地让我感到无精打采,非常感谢任何帮助!
我想知道何时使用R,如果有办法删除行计数器.即说我跑步seq(0,10,0.01)和得到
[1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11
[13] 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23
[25] 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35
[37] 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47
[49] 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
[61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 …Run Code Online (Sandbox Code Playgroud) 我有一个我希望聚合的数据框,删除我想要用于聚合的列中不是NA(或选择唯一行)的行
即在下面我可能想删除数据框中每周有NA的每一行,并保持其他行不被修改:
OTHER_REV month quarter year week date days daysinmonth
1 2785013 1 2009 Q1 2009 2009-01-05 2009-01-05 2009-01-05 31
2 2785013 1 2009 Q1 2009 2009-01-12 2009-01-05 2009-01-05 31
3 2785013 1 2009 Q1 2009 2009-01-19 2009-01-05 2009-01-05 31
4 2785013 1 2009 Q1 2009 2009-01-26 2009-01-05 2009-01-05 31
5 2785013 1 NA QNA 2009 <NA> 2009-01-16 2009-01-16 31
6 2785013 1 NA QNA 2009 <NA> 2009-01-17 2009-01-17 31
Run Code Online (Sandbox Code Playgroud)
生产:
OTHER_REV month quarter year week date days daysinmonth
1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试提供带有感叹号的密码作为密码的一部分,以解决zipfile的extractall功能:
zf.extractall(pwd="password2015!")
Run Code Online (Sandbox Code Playgroud)
我曾尝试过:将pwd作为字符串提供,这会返回一个类型错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\lib\zipfile.py", line 1240, in extractall
self.extract(zipinfo, path, pwd)
File "C:\Python34\lib\zipfile.py", line 1228, in extract
return self._extract_member(member, path, pwd)
File "C:\Python34\lib\zipfile.py", line 1290, in _extract_member
with self.open(member, pwd=pwd) as source, \
File "C:\Python34\lib\zipfile.py", line 1129, in open
raise TypeError("pwd: expected bytes, got %s" % type(pwd))
TypeError: pwd: expected bytes, got <class 'str'>
Run Code Online (Sandbox Code Playgroud)
我也试过提供,pwd=password2015\!但这产生了语法错误.
有谁知道为什么这会返回这样的错误?我以为extractall应该期待一个字符串.