как сэмплировать файл по одному без замены в R - PullRequest
0 голосов
/ 02 февраля 2019

Я работаю над сэмплированием Монте-Карло, для которого мне нужно сделать выборку один за другим из списка файлов в папке.Я не хочу добавлять дубликаты файлов.Таким образом, имя каждого файла используется в качестве имени столбца.Поэтому я хочу избежать двух столбцов с одинаковыми именами.Как я могу это сделать?У меня есть 100 подвыборок, поэтому я не могу пробовать каждый из них отдельно.Мой код выглядит следующим образом.

library(dplyr)
library(lubridate)
library(stringr)
library(raster)
library(rgdal)
library(readr)
library(sp)
library(rgeos)
library(mapdata)
library(sf)
library(data.table)

v<-c(1:500)
loop_N<-dataframe(v)    # dataframe 1 with which all the sampled dataframes will be joined
names(loop_N)<-c("Roads_ID")
loop_N$num_obs<-0
dir<-"Path"
fi <- list.files(dir, pattern="\\.csv$") #list of dataframes as shapefiles 
y1<-500
while(y1>=0){
  sample1 <- sample(fi, 1,replace = FALSE, prob=NULL) # i want each time sampling  with out replacement
  my_spdf<-read_csv(sample1)
  na<-sample1
  d<-substr(na, 1, 18)
  w<- str_replace_all(d,"_","-") # This is for the name of the column which shows me that if same file is sampled it will have the same column names
  addr<-data.frame(r$Row_Rd_No,r$value)    #sampled data frame
  names(addr)<-c("Road_ID",w)
  #dataframe added to loop_N by using Road_ID
  loop_N[, num_obs := Reduce(`+`, lapply(.SD,function(x) !is.na(x)))]
  loop_N<- subset(loop_N, num_obs != 7)
  y1=nrow(loop_N)
  y1<-as.numeric(y1)
  }

Повторены имена столбцов или взят один и тот же файл: Мой вывод.

Ожидаемый вывод Похоже на

...