[英]Reading file containing numerical values and unknown errors (random strings) in 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.