移至主內容
首頁
SLAT Blogs

主導覽

  • 首頁
使用者帳號選單
  • 登入

導航連結

  1. 首頁
  2. 部落格
  3. 肥貓的異想世界

用R處理字串的簡單示範

By 肥貓, 4 七月, 2021

因為我喜歡將從開放式課程網頁下載得到的影片檔轉換成音檔,存入手機等方便隨身攜帶與收聽,便衍生出使用命令列(本例為ffmpeg)批次處理的需求。一種方法是用WinFF來代勞,但是若有客製化需求的時候,直接打命令列還是比較乾脆。但是我當然不想傻傻地一個一個檔案慢慢key,便需要利用R的字串處理工具,把變數(如檔案路徑與名稱)和命令式整合在一起。以下示範相關過程與程式碼。

  • 前處理:設定變數與欄位

第一步是先設定變數與欄位,所以我先在Calc做了兩欄,一欄是來源檔的檔名和路徑(在Ubuntu,你可以透過複製該檔,在Calc直接以純文字貼上該檔案路徑);另一欄則是你想要的格式,如果你想做得細一點,也可以再新增一欄鍵入各種參數。

由於R的匯入資料功能使用xls檔比較方便,所以我最後是將其存成xls檔,而非開放格式的ods或csv等格式。

  • 後處理:使用R的匯入與字串處理功能

進入R(本例是使用RStudio)之後,你可以直接使用File ->Import Dataset的功能,匯入剛才存好的xls檔。也可以鍵入程式碼來匯入。以下是我使用到的程式碼。以下指令是假定你了解R的基本操作,若是新手請先爬文或參閱相關工具書。

#匯入xls檔

library(readxl)
ffmpeg <- read_excel("Nextcloud/R_temp/ffmpeg.xls")

#前處理
attach(ffmpeg) #將該檔案匯入工作區
a=paste("ffmpeg -i " ,filename," ", filename,".",format_output, sep="")

#這個階段就會變成數十行的ffmpeg -i 的命令式;但是在終端機打command line,不宜有換行的標記

#所以還要再加一個collapse的指令,將換行符號取代成分號,這樣才能直接批次使用。當然你也可能直接合併這兩個指令(如下)
paste(a, collapse=";")

b=paste(a, collapse=";") #把剛才的結果存成新的物件
b #確定你做出來的東西對不對,也可以將結果直接在終端機複製貼上
write(b, file='Nextcloud/R_temp/data.txt') #若您希望重複使用,就把他存成文字檔

理論上做出來的結果,會變成如下的格式。雖然後者產出的檔案名字有點醜,不過還算堪用啦:

ffmpeg -i /home/fattabby/下載/filename1.mp4 /home/fattabby/下載/filename1.mp4.mp3;ffmpeg -i /home/fattabby/下載/filename2.mp4 /home/fattabby/下載/filename2.mp4.mp3;...;ffmpeg -i /home/fattabby/下載/filenameN.mp4 /home/fattabby/下載/filenameN.mp4.mp3

這樣便能批次轉換數十個,甚至數百個以上的檔案,有助於節省傳統方法必須守著螢幕的時間成本。

 

  • 肥貓的異想世界

部落格列表

管理日誌
LibreOffice 正體中文文件
肥貓的異想世界
軟體自由運動部落格
馬哥的大小事
My Libre World
社會派宅爸

最新文章

test title
Interview with Sandy Corzeta, Admin of Indonesia's Fediverse Instance 'misskey.id'
簡單處理在Ubuntu終端機啟動Miniconda的問題
在LibreOffice Calc利用Vlookup做精準搜尋
現在就加入 LibreOffice 團隊當全職開發者,處理 RTL/CTL/CJK 等事宜!
[JS 筆記] 可選串連、條件三元、falsy、some與includes
用QGIS + OpenStreetMap + Python 處理線形地理資料
申請墨西哥簽證的經驗談
0805 ITTS 田野筆記:與印尼開源社群的初次接觸
Setting up Mailman3 on Debian 11 (Bullseye)
試解決Zotero安裝後無法使用LibreOffice Integration引用文獻的問題
2023年5月的 LibreOffice 之月的獲獎者!
Powered by Drupal