Я пытаюсь написать следующий цикл над эмпирическим набором данных, где каждый репликат ID имеет различное количество наблюдений за каждый период выборки. Любые предложения были бы высоко оценены!R сохранение результатов из вложенного цикла for
a <- unique(bma$ID)
t <- unique(bma$Sample.period)
# empty list to hold the data
dens.data <- vector(mode='list', length = length(a) * length(t))
tank1 <- double(length(a))
index = 0
for (i in 1:length(a)){
for (j in 1:length(t)){
index = index + 1
tank1[index] = a[index] ### building an ID column
temp.tank <- subset(bma, bma$ID == a[i])
time.tank <- subset(temp.tank, temp.tank$Sample.period == t[j])
temp1 <- unique(temp.tank$Sample.period)
temp.tank <- data.frame(temp.tank, temp1)
dens.1 <- density(time.tank$Biomass_.adults_mgC.mm.3, na.rm = T)
# extract the y-values from the pdf function - these need to be separated by each Replicate and Sample Period
dens.data[[index]] <- dens.1$y
}
}
#### extract the data and place into a dataframe
dens.new<- data.frame(dens.data)
dens.new
colnames(dens.new) <- c("Treatment","Sample Period","pdf/density for biomass")
all<- list(dens.new)
all
### create new spreadsheet with all the data from the loop
dens.new.data<- write.csv(dens.new, "New.density.csv") ## export file to excel spreadsheet
Вызов dens.new < - data.frame (dens.data) Выход следующее сообщение об ошибке:
Error in data.frame(c(...) :
arguments imply differing number of rows: 512, 0
Петля, кажется, работает для dens.data[[1]]
но возвращает NULL
для dens.data[[>1]]
Можете ли вы задать этот вопрос [минимальный и воспроизводимый] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) путем включения небольшого набора данных и ожидаемых результатов ? – shayaa