scan
位於 base
包(package)。 說明
從控製台或文件將數據讀入向量或列表。
用法
scan(file = "", what = double(), nmax = -1, n = -1, sep = "",
quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",
skip = 0, nlines = 0, na.strings = "NA",
flush = FALSE, fill = FALSE, strip.white = FALSE,
quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,
comment.char = "", allowEscapes = FALSE,
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
參數
file |
要從中讀取數據值的文件的名稱。如果指定的文件是 否則,將解釋文件名相對的到當前工作目錄(由 這可以是壓縮文件(請參閱 或者,
要讀取不是當前編碼的數據文件(例如 UTF-8 語言環境中的 Latin-1 文件或相反),請使用 |
what |
|
nmax |
要讀取的數據值的最大數量,或者如果 |
n |
integer:讀取數據值的最大數量,默認無限製。無效值將被忽略。 |
sep |
默認情況下,掃描期望讀取“空白”分隔的輸入字段。或者, 如果指定,則應為空字符串(默認值)或 |
quote |
作為單個字符串或 |
dec |
小數點字符。這應該是一個僅包含一個單字節字符的字符串。 ( |
skip |
開始讀取數據值之前要跳過的輸入文件的行數。 |
nlines |
如果為正,則表示要讀取的最大數據行數。 |
na.strings |
字符向量。該向量的元素將被解釋為缺失 ( |
flush |
邏輯:如果 |
fill |
邏輯:如果 |
strip.white |
與 如果 |
quiet |
邏輯:如果 |
blank.lines.skip |
邏輯:如果輸入中的 |
multi.line |
合乎邏輯的。僅當 |
comment.char |
字符:長度為 1 的字符向量,包含單個字符或空字符串。使用 |
allowEscapes |
合乎邏輯的。 C 風格的轉義是否應該如‘\n’ 被處理(默認)還是逐字讀取?請注意,如果不在引號內,它們可能會被解釋為分隔符(但不能解釋為注釋字符)。 被解釋的轉義符是控製字符‘\a、\b、\f、\n、\r、\t、\v’以及八進製和十六進製表示形式,例如‘\040' 和 '\0x2A’。任何其他轉義字符都被視為其本身,包括反斜杠。請注意 Unicode 轉義(以‘\u' 或者 '\U': 看base Quotes)從未被處理。 |
fileEncoding |
字符串:如果非空,則聲明文件(不是連接或鍵盤)上使用的編碼,因此可以重新編碼字符數據。請參閱 |
encoding |
輸入字符串采用的編碼。如果值為 |
text |
字符串:如果未提供 |
skipNul |
邏輯:讀取字符字段時是否應該跳過 NULL? |
細節
what
的值可以是類型列表,在這種情況下,scan
返回向量列表,其類型由 what
中元素的類型指定。這提供了一種讀取柱狀數據的方法。如果任何類型為 NULL
,則跳過相應字段(但結果中會出現 NULL
組件)。
what
或其組件的類型可以是六種原子向量類型之一或 NULL
(請參閱 is.atomic
)。
出於此函數的目的,“空白”被定義為來自設定空間、水平製表符、回車符和換行符的一個或多個連續字符(又名“newline”,"\n"
)。它不包括換頁符或垂直製表符,但在 Latin-1 和 Windows 8 位語言環境中(但不包括 UTF-8)'space' 包括不間斷空格‘"\xa0"’。
空數字字段始終被視為缺失值。空字符字段將被掃描為空字符向量,除非 na.strings
包含 ""
(當它們被視為缺失值時)。
數字字段允許的輸入是可選空格後跟 NA
或可選符號後跟十進製或十六進製常數(請參閱 NumericConstants ),或 NaN
、 Inf
或 infinity
(忽略大小寫)。超出範圍的值記錄為 Inf
、 -Inf
或 0
。
對於整數字段,允許的輸入是可選的空格,後跟NA
或一個可選的符號和一個或多個數字(‘0-9’):所有超出範圍的值都會轉換為NA_integer_
.
如果sep
是默認值(""
), 人物 '\帶引號的字符串中的 ' 會轉義後麵的字符,因此可以通過轉義引號將引號包含在字符串中。
如果sep
非默認,字段可以用‘的樣式引用.csv' 分隔符位於引號內的文件 (''
或者""
) 被忽略,並且可以通過將引號加倍來將引號放入字符串內。然而,如果sep = "\n"
默認情況下,假設人們想要逐字閱讀整行。
僅在字符字段和 NULL
字段(可能會跳過字符字段)中解釋引用。
請注意,由於 sep
是分隔符而不是終止符,因此如果文件以換行符 ( "\n"
) 結尾,則通過 scan("foo", sep = "\n", blank.lines.skip = FALSE)
讀取文件將給出一個空的最後一行,否則則不會。這可能不是你所期望的;另請參見readLines
。
如果出現comment.char
(除了在帶引號的字符字段內),則表明該行的其餘部分應被視為注釋並被丟棄。以注釋字符開頭的行(可能在帶有默認分隔符的空格之後)被視為空行。
從控製台讀取時,line-length 限製為 4095 字節(這可能會施加下限:請參閱“R 簡介”)。
如果 what
是列表,則每 1000 行檢查一次用戶中斷,否則每 10000 個項目檢查一次。
如果 file
是字符串並且 fileEncoding
不是默認值,或者如果它是帶有非默認 encoding
參數的 not-already-open connection,則文本將轉換為 UTF-8 並如此聲明(scan
的 encoding
參數被忽略)。請參閱 readLines
的示例。
輸入流中嵌入的 nul 將終止當前正在讀取的字段,每次調用 scan
時都會發出警告。設置 skipNul = TRUE
會導致它們被忽略。
值
如果 what
是一個列表,則與 what
具有相同長度和相同名稱(任意)的列表。
否則,為 what
類型的向量。
如果 encoding
是 "latin1"
或 "UTF-8"
,結果中的字符串將具有聲明的編碼。
注意
multi.line
的默認值與 S 不同。要每行讀取一條記錄,請使用 flush = TRUE
和 multi.line = FALSE
。 (請注意,帶引號的字符串仍然可以包含嵌入的換行符。)
如果未指定項目數量,內部機製會以 2 的冪次重新分配內存,因此最多可以使用所需內存的三倍。 (它需要舊副本和新副本。)如果可以,請在輸入大型向量時指定 n
或 nmax
,並在輸入大型列表時指定 nmax
或 nlines
。
在打開的連接上使用 scan
讀取部分行可能會丟失字符:使用顯式分隔符來避免這種情況。
擁有nul
字段中的字節(包括‘\0' 如果allowEscapes = TRUE
)可能會導致該字段的解釋終止於nul
。它們通常不會出現在文本文件中 - 請參閱readBin
.
例子
cat("TITLE extra line", "2 3 5 7", "11 13 17", file = "ex.data", sep = "\n")
pp <- scan("ex.data", skip = 1, quiet = TRUE)
scan("ex.data", skip = 1)
scan("ex.data", skip = 1, nlines = 1) # only 1 line after the skipped one
scan("ex.data", what = list("","","")) # flush is F -> read "7"
scan("ex.data", what = list("","",""), flush = TRUE)
unlink("ex.data") # tidy up
## "inline" usage
scan(text = "1 2 3")
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
read.table
更方便用戶讀取數據矩陣; readLines
一次讀取一行文件。 write
。
Quotes
了解 C 風格轉義序列的詳細信息。
相關用法
- R scale 類矩陣對象的縮放和居中
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R search 給出 R 對象的搜索路徑
- R solve 求解方程組
- R sprintf 使用 C 風格字符串格式化命令
- R stop 停止函數執行
- R sign 標誌函數
- R svd 矩陣的奇異值分解
- R strtoi 將字符串轉換為整數
- R source 從文件、連接或表達式中讀取 R 代碼
- R sQuote 引用文字
- R switch 選擇替代方案列表之一
- R substitute 替換和引用表達式
- R strrep 重複字符向量的元素
- R split 分組並重新集合
- R slice.index 數組中的切片索引
- R sort 對向量進行排序或排序
- R standardGeneric 形式化方法係統 – 調度 S4 方法
- R sequence 創建序列向量
- R startsWith 字符串是否以另一個字符串開頭或結尾?
- R system.file 查找 R 係統文件的名稱
- R sample 隨機樣本和排列
- R strwrap 將字符串換行以設置段落格式
- R seek 重新定位連接的函數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Read Data Values。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。