【发布时间】:2022-02-10 20:36:53
【问题描述】:
我要翻译以下R代码:
k =5
Ret = as.data.frame(sapply(1:k, function(i) rnorm(k) ) )
deltas=NULL
for (i in 1:k) {
y = Ret[,i]
mvalue = mean(y)
minvec = NULL
for (j in 1:length(y))
{
minvechelp = min(0,(y[j]-mvalue))
minvec[j] = minvechelp
}
delta=sqrt(sum(minvec^2)/length(y))
deltas = cbind(deltas,delta)
}
deltas
它实现了数据帧的碰撞平均值,然后取数据帧的长度来计算包含最小计算的参数 delta,但我认为 df 已转换为向量。
在 Python 中,我的努力是:
k= 5
A = pd.DataFrame(
[np.random.randn(k) for i in range(k)]
)
A.size
deltas = []
for i in range(0,k):
y = Ret.iloc[:,i]
mvalue = np.mean(y)
minvec = []
for j in range(0,y.size):
minvechelp = min(0,(y[j]-mvalue))
minvec[j] = minvechelp
delta=np.sqrt(sum(minvec**2)/y.size())
deltas = np.hstack((deltas,delta))
deltas
但我收到一个错误
KeyError: 0
我的错误在哪里,我该如何解决?有什么帮助吗?
【问题讨论】:
-
KeyError: 0起源于哪一行? -
@Daweo 在
minvechelp = min(0,(y[j]-mvalue)) -
对于 R 代码的价值,可以大幅改进,生成的(无循环)代码可能更容易转换为等效的 numpy 代码。
-
@KonradRudolph 欢迎任何帮助
-
@Oliver 感谢您的简化。在 python 中阅读 here 它有助于将扫描函数从 R 转换为 python,但我找不到参数 STATS。我认为它只有在 pandas 中等效的 FUN 参数