R-создать фрейм данных внутри этого цикла

#r

#r

Вопрос:

Как я могу создать фрейм данных внутри этого цикла на основе вычисленных переменных?

Скрипт:

 for (i in  1:nrow(newData)){
  X<-newData[i,1]
  Y<-newData[i,2]
  dRatio <- ((X-Xmean)/(Y-Ymean)) 
  dataList <- data.frame(X,Y,dRatio)
}
  

Комментарии:

1. dataList = cbind(newData[,1], newData[,2], (newData[,1]-Xmean)/(newData[,2]-Xmean))

Ответ №1:

Попробуйте этот векторизованный:

 dataList <- newData[,1:2]
dataList$dRatio <- ((newData[,1]-Xmean)/(newData[,2]-Ymean)) 
  

Или, если вы продолжаете использовать свой собственный код:

 m <- matrix(0, nrow(newData), 3)
for (i in  1:nrow(newData)){
  X<-newData[i,1]
  Y<-newData[i,2]
  dRatio <- ((X-Xmean)/(Y-Ymean)) 
  m[i,] <- c(X,Y,dRatio)
}
dataList <- as.data.frame(m)
  

Ответ №2:

Вы могли бы создать список для хранения фреймов данных вне вашего цикла

 dataList<-list()
for (i in  1:nrow(newData)){
  X<-newData[i,1]
  Y<-newData[i,2]
  dRatio <- ((X-Xmean)/(Y-Ymean)) 
  dataList[[i]] <- data.frame(X,Y,dRatio)
}
  

Комментарии:

1. это создаст список, есть какой-нибудь способ создать фрейм данных?

2. Это создаст список фреймов данных.