Это сработало для меня:
replace_na_with_last<-function(x,a=!is.na(x)){
x[which(a)[c(1,1:sum(a))][cumsum(a)+1]]
}
> replace_na_with_last(c(1,NA,NA,NA,3,4,5,NA,5,5,5,NA,NA,NA))
[1] 1 1 1 1 3 4 5 5 5 5 5 5 5 5
> replace_na_with_last(c(NA,"aa",NA,"ccc",NA))
[1] "aa" "aa" "aa" "ccc" "ccc"
скорость тоже разумная:
> system.time(replace_na_with_last(sample(c(1,2,3,NA),1e6,replace=TRUE)))
user system elapsed
0.072 0.000 0.071
См. этот ответ . Спросите себя, зачем вам нужен Access, не могли бы вы использовать SQL Express? Если вам абсолютно необходим Access, тогда кажется, что EF не является правильным выбором в этом случае.
В настоящее время доступ к одной стороне с возможностью обмена данными с EF (в частности, с кодовым кодом) поскольку EF абстрагирует большую часть базы данных от вашего кода; в зависимости от дизайна базы данных это может быть так же просто, как изменение строки подключения динамически. Практические последствия этого действительно зависят от дизайна вашей базы данных и от характера и сложности используемого вами приложения. См. этот вопрос , например, другой пример .
Вы можете использовать EF с Microsoft Access с помощью поставщика Entity Framework для Microsoft Access. Вы можете найти поставщика EF для доступа
Мы используем Dapper как наш ORM с репозиториями при работе с MS Access. Это фантастика.