我了解如何讀取存盤在磁盤上的 CSV 檔案,但我不知道如何使用 R 通過 CLI 流式傳輸 CSV 內容。
例如,使用簡單的 CLI 從磁盤讀取 CSV 檔案。
library(optparse)
option_list <- list(
# Absolute filepath to CSV file.
make_option(c("-c","--csv"),type="character",default=NULL,
help="CSV filepath",metavar="character")
);
opt_parser <- OptionParser(option_list=option_list)
opt <- parse_args(opt_parser)
csv_filepath <- opt$csv
csv <- read.csv(csv_filepath)
如果我正在使用資料流,我將如何執行此操作?
uj5u.com熱心網友回復:
R 總是從連接中讀取。連接可以是檔案、url、記憶體中的文本等。
因此,如果您想從記憶體中已經存在的內容中讀取 csv 格式的資料,您只需使用 text= 引數,而不是檔案名。
像這樣:
my_stream = "name;age\nJulie;25\nJohn;26"
read.csv(text = my_stream, sep = ";", header = T)
輸出將是:
name age
1 Julie 25
2 John 26
read.csv()當然,您可以正常放置附加引數。
uj5u.com熱心網友回復:
R 源代碼和包optparse。
首先撰寫一個R源檔案"example.R",如下。
#!/usr/bin/env Rscript
#
# R source: example.R
# options: -c --csv
#
library(optparse)
option_list <- list(
# Absolute filepath to CSV file.
make_option(c("-c","--csv"),type="character",default=NULL,
help="CSV filepath",metavar="character")
)
opt_parser <- OptionParser(option_list=option_list)
opt <- parse_args(opt_parser)
csv_filepath <- opt$csv
csv <- read.csv(csv_filepath)
message(paste("\nfile read:", csv_filepath, "\n"))
str(csv)
然后,更改執行權限,以便 bash shell 識別#!shebang 并運行Rscript將檔案傳遞給它。
在這種情況下,我將僅更改用戶權限,而不更改其組。
bash$ chmod u x example.R
考試。
我已經用這個 data.frame 測驗了上面的腳本:
df1 <- data.frame(id=1:5, name=letters[1:5])
write.csv(df1, "test.csv", row.names=FALSE)
并且,在 Ubuntu 20.04 LTS 上,運行命令./example.R,在引數中傳遞 CSV 檔案名csv。命令及其輸出是
bash$ ./example.R --csv=test.csv
file read: test.csv
'data.frame': 5 obs. of 2 variables:
$ id : int 1 2 3 4 5
$ name: chr "a" "b" "c" "d" ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362510.html
