Альтернатива ответам darindaCoder :
path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(os.path.join(path, "*.csv")) # advisable to use os.path.join as this makes concatenation OS independent
df_from_each_file = (pd.read_csv(f) for f in all_files)
concatenated_df = pd.concat(df_from_each_file, ignore_index=True)
# doesn't create a list, nor does it append to one
Вот ваш цикл, написанный с vapply
out <- vapply(1:nrow(cars),
function (i) {
valA <- .subset2(cars, 1)[i] + 45L
valB <- .subset2(cars, 1)[i] + 10L
c(valA, valB)
}, numeric(2))
t(out)
# [,1] [,2]
# [1,] 49 14
# [2,] 49 14
# [3,] 52 17
# [4,] 52 17
# [5,] 53 18
# [6,] 54 19
# [7,] 55 20
# ...
# (returns an array instead of a list, but that can be changed easily).
Кстати, я не знаю, какова ваша конечная цель, но в этом примере, почему любой цикл вообще?
# vectorized
cbind(.subset2(cars, 1) + 45L, .subset2(cars, 1) + 10L)
# [,1] [,2]
# [1,] 49 14
# [2,] 49 14
# [3,] 52 17
# [4,] 52 17
# [5,] 53 18
# [6,] 54 19
# [7,] 55 20
# ...
# or similar result with
# getDetails(cars) (version with c())
Думаю, я понял это только после небольшой помощи @Parfait (спасибо, @Parfait!). В случае, если кто-то еще искал ответ, это сработало для меня, но я бы приветствовал любые другие ответы:
lapply(1:numrows, function(i) getDetails(cars[i,]))
и мне пришлось изменить мою функцию, чтобы она возвращала вектор вместо списка: [ 113]
getDetails<-function(parameters){
valueA<-parameters[1]+45
valueB<-parameters[1]+10
c(valueA, valueB)
}