重写 R 的 density() (不是真的)

Rewriting R's density() (not really)

响应this question, I took upon the challenge to make my understanding on R's density()函数。

由于我对 R 非常陌生,所以我对 c() 函数的向量一无所知,这让我使用列表作为最接近的形式。

我会做这个功能:

def density(x, bw, adjust):
    bw2 = None
    result = 0
    if bw == "nrd0":
        bw2 = 31.39367
    else:
        print("No such bandwidth.")
    for i in range[len(x)]:
        x[i] = x[i] * bw2
    for i in range[len(x)]:
        result = result + x[i]
    return result * adjust

我想测试一下:

x = [1, 3, 5]
kern = density(x, "nrd0", 1)
print(kern)

我得到了 2 个错误,主要错误是 TypeError

如果您想进一步研究,这里是完整的终端消息:

Traceback (most recent call last):
  File "density.py", line 15, in <module>
    kern = density(x, "nrd0", 1)
  File "density.py", line 8, in density
    for i in range[len(x)]:
TypeError: 'type' object is not subscriptable

如何修复 TypeError

for i in range[len(x)]:
        x[i] = x[i] * bw2

你有 range[] 而它应该是 ()。尝试改变它。 下面是一个例子:

l = [10, 20, 30, 40] 
for i in range(len(l)): 
    print(l[i], end =" ") 
print()