簡體   English   中英

讀取包含R中數值的文本文件

[英]Reading text file containing numerical values in R

我知道有關於此主題的帖子,但是到目前為止,我沒有閱讀和嘗試過的任何內容似乎都沒有用。 這應該很簡單,但顯然並非如此。 我有一個包含字符和文本的參數文件。 當我閱讀以下內容時:

parmData <- read.table("ParameterData.txt”)

然后將值打印到屏幕上,得到下一幀。 幀中的每個對象顯然都是一個因素。

     V1
1    10
2     5
3     8
4   0.3
5   0.5
6   VAL

我首先嘗試將它們加載到單獨標記的變量中,例如:

var1 <- as.numeric(parmData[1,1])  ## with as.character used for the VAL value

一切順利,直到獲得0.3、0.5等實數為止。轉換為數字會將這些值轉換為整數... 3和5。我已經嘗試了所有方法...例如,使用parmData值而無需重新分配,但這實際上是factors ,這些factors在我使用的某些方法中無效。

當然這很容易,而且我對某些事情視而不見。 我想將數字值視為數字,將字符值視為字符。 我該怎么做呢?

數據文件如下所示:

10   ## lookback days
5    ## lookback days
8    ## Volatility lookback days
0.3  ## weighting 1
0.5  ## weighting 2
0.2  ## Volatility weighting
8    ## averaging period 1
10   ## averaging period 2
12   ## averaging period 3
"SHY"   ## cutoff asset
0.03 ## no-risk percentage (decimal)
0.3  ## maximum amount allowed (decimal)
5    ## lookback days for correlation 
5    ## lookback days covariance 

您不能在同一列中包含字符和數字。 您也無法將因子直接轉換為數值並獲得正確的值。 因子存儲為整數值,該整數值可能會與您擁有的值不同。 我們必須首先轉換為字符,然后轉換為數字。

VAL必須為NA ,否則整列必須為字符。 對於數字:

suppressWarnings(with(df, as.numeric(levels(V1)[V1])))
#[1] 10.0  5.0  8.0  0.3  0.5   NA

對於字符,只需從上方刪除as.numeric調用即可。 如果需要,您也可以刪除suppressWarnings調用。 這只是警告我們有關引入的NA值。


更新:根據您的編輯,我將使用scan及其許多參數。

scan(text = txt, what = character(), quote = "\"", sep = "\n",   
     comment.char = "#", strip.white = TRUE, quiet = TRUE)
#  [1] "10"   "5"    "8"    "0.3"  "0.5"  "0.2"  "8"    "10"   "12"   "SHY" 
# [11] "0.03" "0.3"  "5"    "5" 

其中, text = txt將替換為您的文件名。 如果要轉換為數字, as.numeric在該向量上使用as.numeric

txt <- '10   ## lookback days
5    ## lookback days
8    ## Volatility lookback days
0.3  ## weighting 1
0.5  ## weighting 2
0.2  ## Volatility weighting
8    ## averaging period 1
10   ## averaging period 2
12   ## averaging period 3
"SHY"   ## cutoff asset
0.03 ## no-risk percentage (decimal)
0.3  ## maximum amount allowed (decimal)
5    ## lookback days for correlation 
5    ## lookback days covariance '

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM