#純靠北工程師2zo
寫程式也是有分派的,光加總,至少就有三派。
迴圈派(相信編譯器都會優化)
for (i=1;i<=100;i++)
total=total+i;
---
遞迴派
sigma(int l,int r){
if(r==l) return l;
return sigma(l,r-1)+r;
}
sigma(1,100)
---
效能派
n*(n+1) / 2
更複雜的功能下,考慮
效能 時間 腦力,你會是哪派?
👉 去 GitHub 給我們🌟用行動支持純靠北工程師 https://github.com/init-engineer/init.engineer
📢 匿名發文請至 https://kaobei.engineer/cards/create
🥙 全平台留言 https://kaobei.engineer/cards/show/3876
「r for迴圈」的推薦目錄:
- 關於r for迴圈 在 純靠北工程師 Facebook 的精選貼文
- 關於r for迴圈 在 Re: [問題] for迴圈讀取大量csv - 看板R_Language - 批踢踢實業坊 的評價
- 關於r for迴圈 在 R語言程式設計導論-第二課條件判斷與迴圈 - YouTube 的評價
- 關於r for迴圈 在 r迴圈矩陣在PTT/Dcard完整相關資訊 - 媽媽最愛你 的評價
- 關於r for迴圈 在 r迴圈矩陣在PTT/Dcard完整相關資訊 - 媽媽最愛你 的評價
- 關於r for迴圈 在 分享在python與R中Loops迴圈的應用- 軟體工程師 - Dcard 的評價
- 關於r for迴圈 在 Re: [問題] for loop 迴圈命名變數- 看板R_Language - PTT數位 ... 的評價
- 關於r for迴圈 在 Re: [問題] for loop 迴圈命名變數 的評價
r for迴圈 在 r迴圈矩陣在PTT/Dcard完整相關資訊 - 媽媽最愛你 的美食出口停車場
[PDF] R commands(11.09.13) 指令用法簡介2011年9月13日· R 有哪些指令可用,所以整理此表以供簡單查詢,詳細用法請見參考資料。 指令... 矩陣變數t(). ... <看更多>
r for迴圈 在 Re: [問題] for迴圈讀取大量csv - 看板R_Language - 批踢踢實業坊 的美食出口停車場
※ 引述《hotlin0709 (hotlin0709)》之銘言:
: [問題類型]:使用for迴圈讀取多資料夾內多個csv 處理
: 效能諮詢(我想讓R 跑更快)
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 我要讀取多個資料夾內的多個csv,然後讀進來後,全部資料做簡單的處理filter一些變數,
: 並將擷取完資料的某一欄位加總起來。
: 以下是我寫的方式,但是跑太久了......請問有比較快速的方法嗎?
: [程式範例]:
: library(dplyr)
: l<- list.files(path="/users/Johnny/downloads/M08A",pattern="*")
: bindtemp <- data.frame()
: temp <- data.frame()
: for (k in l){
: ll<- list.files(path=paste("/users/Johnny/downloads/M08A/",k,sep = ''),pattern="*")
: for (i in ll) {
: file_names <- paste("/users/Johnny/downloads/M08A/",k,i,sep = '/')
: files <- list.files(path=file_names, pattern="*")
: for (file in files) {
: bindtemp <- read.csv(paste(file_names,file,sep="/"),header=F)
: temp <- rbind(temp,bindtemp)
: }
: }
: }
: df3<-temp %>% filter((V3=="03F0961N"|V3=="03F0846S"),V4==31) %>% summarise(n=sum(V5))
: [關鍵字]:
: for迴圈 讀取多資料夾的CSV
覺得M08A好像在哪看過= =? 你是在用交通部的資料嗎
而且V3 filter的條件看起來像是VD ID,03F0961N是國道三號北上車道961公里吧XD
你的程式主要問題是不斷擴增data.frame,造成不斷重複複製
第二個問題是沒必要用到三層迴圈,只需要recursive = TRUE就可以解決了
所以這兩個問題用下面這樣就可以解決,範例code如下:
library(data.table)
# 直接用list.files直接取得全部的csv檔案 (recursive = TRUE)
csvFiles <- list.files(path="/users/Johnny/downloads/M08A",
pattern="\\.csv$", recursive = TRUE)
# 開一個空間存讀進來的資料
temp <- vector("list", length(l))
for (i in seq_along(csvFiles))
temp[[i]] <- fread(csvFiles[i]) # 讀進每一個csv資料
DF <- rbindlist(temp) # 把list of data.table/data.frame合併成一個
setDF(DF) # 轉回去成data.frame
剩下就看你DF要拿去做什麼了
建議可以把這個常用的資料直接存成一些可以快速import的格式
之後要讀也比較容易
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.42.68
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1522760673.A.C86.html
※ 編輯: celestialgod (36.235.42.68), 04/03/2018 21:12:03
... <看更多>