Я делаю некоторые небольшие расчеты и я решил заполнить данные внутри data.table
, так как это намного быстрее, чем data.frame
и rbind
странно ошибка R при использовании data.table
поэтому в основном мой код что-то вроде этого:
df
- data.frame
, используемый при расчете, но важно, что он содержит.
l=12000
dti = 1
dt = data.table(ni = 0, nj = 0, regerr = 0)
for (i in seq(1,12000,200)) {
for (j in seq(1, 12000, 200)) {
for (ind in 1:nrow(df)) {
if(i+j >= l/2){
df[ind,]$X = df[ind,]$pos * 2
} else {
df[ind,]$X = df[ind,]$pos/l
}
}
for (i in 1:100) { # 100 sample
sample(df$X,nrow(df), replace=FALSE)
fit=lm(X ~ gx, df) #linear regression calculation
regerror=sum(residuals(fit)^2)
print(paste(i,j,regerror))
set(dt,dti,1L,as.double(i))
set(dt,dti,2L,as.double(j))
set(dt,dti,3L,regerror)
dti=dti+1
}
}
}
код печатает первые несколько раундов print(paste(i,j,regerror))
и затем завершает работу с этой ошибкой:
*** caught segfault ***
address 0x3ff00008, cause 'memory not mapped'
Segmentation fault (core dumped)
EDIT
structure(list(ax = c(-0.0242214, 0.19770304, 0.01587302, -0.0374415,
0.05079826, 0.12209738), gx = c(-0.3913043, -0.0242214, -0.4259067,
-0.725, -0.0374415, 0.01587302), pos = c(11222, 13564, 16532,
12543, 12534, 14354)), .Names = c("ax", "gx", "pos"), row.names = c(NA,
-6L), class = "data.frame")
Любые идеи приветствуются.
@Arun индекса два я где ошибка мною при написании вопроса, но в основном функция вычисления что-то внутри этого цикла (где это написано я вычислить что-то), то я перетасовываю его, применяю регрессию для перетасованных данных, затем я сохраняю данные. Таблица – ifreak
Если вы хотите поставить [воспроизводимый код] (http://stackoverflow.com/questions/5963269/how-to-make-a- замечательный-воспроизводимый пример). Я думаю, вы можете получить ответ. Я уверен, что три цикла для петель - это не самая эффективная техника для того, что вы делаете. Как бы то ни было, я не могу полностью следить за тем, что происходит там, не зная, что такое 'df', и зная, по крайней мере, немного о том, что происходит в вашем внутреннем для цикла. – Justin
@ Justin Я обновил свой вопрос с помощью фрейма данных df и кода внутри внутреннего цикла. – ifreak