gpt4 book ai didi

R基于零还是基于一?

转载 作者:行者123 更新时间:2023-12-04 17:37:16 25 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




8年前关闭。




我们在 R 中有以下代码(已经被剥离到骨头以进行调试)

tgtStart = 29593
for (i in tgtStart:tgtStart)
{
PricerData[i, 1] = 111
}
print(PricerData[29592,1])

PricerData 是一个矩阵,其构造远远超过 29593,并预先填充了 NA。

我不明白的是,PricerData[29592, 1] 将更改为 111,此代码打印 111,而不是我们预期的 NA。

为了使它更详细一点,我今天结束的代码是:
tgtStart = 29593
for (i in tgtStart:tgtStart)
{
print(PricerData[i,1])
print(PricerData[i-1,1])

PricerData[i, 1] = 111

print(PricerData[i,1])
print(PricerData[i-1,1])
}
print(PricerData[29592,1])

它会打印:
[1] NA
[1] NA
[1] 111
[1] NA
[1] 111

到最后都如预期,为什么哦为什么我们开始之前的元素改变了?为什么不在循环中,只有在 for 循环关闭之后(哦,如果我们将 29593 更改为 29596,一切都按预期工作,我不明白。)。

另外,我不编码 R,通常我在做 C++,我明白 R 是基于它的向量,但请不要介意涵盖真正的基础知识。我们使用 R 版本 2.4.1.5, x64

编辑:
好的,很明显我从我们的代码中删减了太多,所以对你来说问题就解决了,这里是完整的功能,供引用,我不明白上面给出的输出
LoadPricer <- function(instrument, colo, simDate, sliceSize, startTime, endTime, pricerName, pricerSettings, returnEmptyMatrixIfFileNotFound = FALSE)
{

fileName <- paste ( simulatorOutputBasePath, instrument, '\\', colo, '\\', format(simDate, '%Y%m%d'), '\\', sliceSize, '\\P#', pricerName, '#', pricerSettings, '.csv', sep='')
firstSliceRequest = GetSlicesSinceMidnight(startTime, sliceSize)
lastSliceRequest = GetSlicesSinceMidnight(endTime, sliceSize)

PricerData = as.matrix(matrix(NA, nrow=(lastSliceRequest - firstSliceRequest + 1), ncol = 1))

if (file.exists(fileName))
{
# Load entire file
AllData = as.data.frame(read.csv(fileName, header = TRUE, colClasses=c("customTimeFormat","numeric")))

if (dim(AllData)[1] > 0)
{
firstSliceData = GetSlicesSinceMidnight(as.POSIXlt(AllData[1,1]), sliceSize)
lastSliceData = GetSlicesSinceMidnight(as.POSIXlt(AllData[nrow(AllData),1]), sliceSize)

if ( firstSliceData <= lastSliceRequest & lastSliceData >= firstSliceRequest )
{
tgtStart = max(1, firstSliceData - firstSliceRequest + 1)
tgtEnd = min(lastSliceRequest - firstSliceRequest + 1, lastSliceData - firstSliceRequest + 1)
srcStart = max(1, firstSliceRequest - firstSliceData + 1)
srcEnd = min(lastSliceData - firstSliceData + 1, srcStart + tgtEnd - tgtStart)

#PricerData[as.integer(tgtStart):as.integer(tgtEnd),1] = AllData[as.integer(srcStart):as.integer(srcEnd),2]
for (i in tgtStart:tgtStart)
{
PricerData[i, 1] = 111# as.matrix(AllData[srcStart+i-tgtStart , 2])
}
}
}
}
else
{
if (returnEmptyMatrixIfFileNotFound) PricerData = matrix(NA, nrow=0, ncol=2)
print(paste('WARNING: Unable to load Pricer! File:', fileName))
}

return (PricerData)
}

最佳答案

一个基于

> PricerData <- matrix(NA, 30000, ncol=1)
> tgtStart <- 29593
> for (i in tgtStart:tgtStart) PricerData[i, 1] <- 111
> print(PricerData[29592, 1])
[1] NA
> print(PricerData[29593, 1])
[1] 111

关于R基于零还是基于一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14344025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com