On Oct 9, 2010, at 12:46 PM, Jeffrey Spies wrote:
Jim's solution is the ideal way to read in the data: using the sep=";"
argument in read.table.
However, if you do for some reason have a vector of strings like the
following (maybe someone gives you an Rdata file instead of the raw
data file):
MF_Data <- c("106506;AIG India Liquid Fund-Institutional Plan-Daily
Dividend Option;1001.0000;1001.0000;1001.0000;02-Oct-2010","106511;AIG
India Liquid Fund-Institutional Plan-Growth
Option;1210.4612;1210.4612;1210.4612;02-Oct-2010")
Then you can use this to get a data frame:
as.data.frame(do.call(rbind, lapply(MF_Data, function(x)
unlist(strsplit(x, ';')))))
If you are suggesting that Jim's solution would not work here, then I would
disagree and suggest you try offering your vector (without the <cr>'s
inserted by our mail clients) to his code. It should work just fine and be
far more readable.
On the other hand if you were offering this with an explanation that
strsplit's split argument is more flexible than the sep argument in the read
functions because it accepts regular expressions and so can handle
situations where multiple separators exist in the same line, then I would
applaud you.
--
David.
Cheers,
Jeff.
On Sat, Oct 9, 2010 at 12:30 PM, jim holtman <jholtman at gmail.com> wrote:
Is this what you are after:
x <- c("Scheme Code;Scheme Name;Net Asset Value;Repurchase Price;Sale
Price;Date"
+ , ""
+ ?,"Open Ended Schemes ( Liquid )"
+ , ""
+ , ""
+ , "AIG Global Investment Group Mutual Fund"
+ , "106506;AIG India Liquid Fund-Institutional Plan-Daily Dividend
Option;1001.0000;1001.0000;1001.0000;02-Oct-2010"
+ , "106511;AIG India Liquid Fund-Institutional Plan-Growth
Option;1210.4612;1210.4612;1210.4612;02-Oct-2010"
+ , "106507;AIG India Liquid Fund-Institutional Plan-Weekly Dividend
Option;1001.8765;1001.8765;1001.8765;02-Oct-2010"
+ , "106503;AIG India Liquid Fund-Retail Plan-DailyDividend
Option;1001.0000;1001.0000;1001.0000;02-Oct-2010")
myData <- read.table(textConnection(x[7:10]), sep=';')
closeAllConnections()
str(myData)
'data.frame': ? 4 obs. of ?6 variables:
?$ V1: int ?106506 106511 106507 106503
?$ V2: Factor w/ 4 levels "AIG India Liquid Fund-Institutional
Plan-Daily Dividend Option",..: 1 2 3 4
?$ V3: num ?1001 1210 1002 1001
?$ V4: num ?1001 1210 1002 1001
?$ V5: num ?1001 1210 1002 1001
?$ V6: Factor w/ 1 level "02-Oct-2010": 1 1 1 1
? ? V1
V2 ? ? ? V3 ? ? ? V4 ? ? ? V5 ? ? ? ? ?V6
1 106506 ?AIG India Liquid Fund-Institutional Plan-Daily Dividend
Option 1001.000 1001.000 1001.000 02-Oct-2010
2 106511 ? ? ? ? ?AIG India Liquid Fund-Institutional Plan-Growth
Option 1210.461 1210.461 1210.461 02-Oct-2010
3 106507 AIG India Liquid Fund-Institutional Plan-Weekly Dividend
Option 1001.876 1001.876 1001.876 02-Oct-2010
4 106503 ? ? ? ? ?AIG India Liquid Fund-Retail Plan-DailyDividend
Option 1001.000 1001.000 1001.000 02-Oct-2010
On Sat, Oct 9, 2010 at 12:18 PM, Santosh Srinivas
<santosh.srinivas at gmail.com> wrote:
Newbie question ...
I am looking something equivalent to read.delim but ?which accepts a
text line as parameter instead of a file input.
Below is my problem, I'm unable to get the exact output which is a
simple data frame of the data where the delimiter exists ... coming quite
close though
I have a data frame with 10 lines called MF_Data
?[1] "Scheme Code;Scheme Name;Net Asset Value;Repurchase Price;Sale
Price;Date"
?[2] ""
?[3] "Open Ended Schemes ( Liquid )"
?[4] ""
?[5] ""
?[6] "AIG Global Investment Group Mutual Fund"
?[7] "106506;AIG India Liquid Fund-Institutional Plan-Daily Dividend
Option;1001.0000;1001.0000;1001.0000;02-Oct-2010"
?[8] "106511;AIG India Liquid Fund-Institutional Plan-Growth
Option;1210.4612;1210.4612;1210.4612;02-Oct-2010"
?[9] "106507;AIG India Liquid Fund-Institutional Plan-Weekly Dividend
Option;1001.8765;1001.8765;1001.8765;02-Oct-2010"
[10] "106503;AIG India Liquid Fund-Retail Plan-DailyDividend
Option;1001.0000;1001.0000;1001.0000;02-Oct-2010"
Now for the lines below .. they are delimted by ; ... I am using
?tempTxt <- MF_Data[7]
?MF_Data_F <- ? unlist(strsplit(tempTxt,";", fixed = TRUE))
?tempTxt <- MF_Data[8]
?MF_Data_F1 <- ?unlist(strsplit(tempTxt,";", fixed = TRUE))
?MF_Data_F <- rbind(MF_Data_F,MF_Data_F1)
But MF_Data_F is not a simple 2X6 data frame which is what I want