Hi Balpo,

Try this:

# data

x <- read.table(textConnection("ktot attractors pctstatesinattractors t
lengths

1.0 2.0 3.8146973E-4 17 c(2,2)

1.0 1.0 5.722046E-4 28 c(2)

1.0 2.0 9.536743E-4 18 c(2,2)

1.0 1.0 0.0010490417 14 c(1)"), header = TRUE)

closeAllConnections()


 # function to do the parse()ing

foo <- function(x) eval(parse(text=x))


 # processing

x$mymean <- sapply(with(x, sapply(lengths, foo)), mean, na.rm = TRUE)

x

HTH,
Jorge


On Fri, Oct 22, 2010 at 10:19 PM, Balpo <> wrote:

> Hello again Jim (and everyone)
> I am having a weird problem here with the same parsing thing.
> For example, for the first row I have the following 5 columns.
>
> 1.0    2.0        3.8146973E-4        17    c(2,2)
>
> I need to convert that c(2,2) into a list and get its mean, in this
> particular case mean=2. My program does:
>
> t1 <- read.table(file="file.dat", header=T, colClasses=c("numeric",
> "numeric", "numeric", "numeric", "factor"))
> t1$lengthz <- lapply(t1$lengths, function(a) eval(parse(text=a)))#As Jim
> thought me
> t1$avglen <- as.vector(mode="numeric", lapply(t1$lengthz, function(i)
> mean(i)))
>
> but the 6th column is strangely getting 780 instead of 2.
> This solution used to work! :-(
> Do you have any idea about what is going on?
>
> I attach file.dat.
>
> Thank you for your support.
>
> Balpo
>
>
> On 19/07/10 16:38, Balpo wrote:
>
>>  Thank you a lot, Jim.
>> Issue solved.
>>
>> Balpo
>>
>> On 16/07/10 11:27, jim holtman wrote:
>>
>>> Here is a way of creating a separate list of variable length vectors
>>> that you can use in your processing:
>>>
>>>  # read into a dataframe
>>>> x<- read.table(textConnection("A    B    C    T    Lengths
>>>>
>>> + 1    4.0    0.0015258789    18    c(1,2,3)
>>> + 1    4.0    0.0015258789    18    c(1,2,6,7,8,3)
>>> + 1    4.0    0.0015258789    18    c(1,2,3,1,2,3,4,5,6,7,9)
>>> + 1    4.0    0.0015258789    18    c(1,2,3)
>>> + 1    1.0    0.0017166138    24    c(1,1,4)"), header=TRUE)
>>>
>>>> # create a  'list' with the variable length vectors
>>>> # assuming the the "Lengths" are legal R expressions using 'c'
>>>> x$varList<- lapply(x$Lengths, function(a) eval(parse(text=a)))
>>>>
>>>> x
>>>>
>>>   A B           C  T                  Lengths
>>> varList
>>> 1 1 4 0.001525879 18                 c(1,2,3)                         1,
>>> 2, 3
>>> 2 1 4 0.001525879 18           c(1,2,6,7,8,3)                1, 2, 6, 7,
>>> 8, 3
>>> 3 1 4 0.001525879 18 c(1,2,3,1,2,3,4,5,6,7,9) 1, 2, 3, 1, 2, 3, 4, 5, 6,
>>> 7, 9
>>> 4 1 4 0.001525879 18                 c(1,2,3)                         1,
>>> 2, 3
>>> 5 1 1 0.001716614 24                 c(1,1,4)                         1,
>>> 1, 4
>>>
>>>> str(x)
>>>>
>>> 'data.frame':   5 obs. of  6 variables:
>>>  $ A      : int  1 1 1 1 1
>>>  $ B      : num  4 4 4 4 1
>>>  $ C      : num  0.00153 0.00153 0.00153 0.00153 0.00172
>>>  $ T      : int  18 18 18 18 24
>>>  $ Lengths: Factor w/ 4 levels "c(1,1,4)","c(1,2,3)",..: 2 4 3 2 1
>>>  $ varList:List of 5
>>>   ..$ : num  1 2 3
>>>   ..$ : num  1 2 6 7 8 3
>>>   ..$ : num  1 2 3 1 2 3 4 5 6 7 ...
>>>   ..$ : num  1 2 3
>>>   ..$ : num  1 1 4
>>> On Fri, Jul 16, 2010 at 10:51 AM, Balpo<>  wrote:
>>>
>>>>  Hello to all!
>>>> I am new with R and I need your help.
>>>> I'm trying to read a file which contests are similar to this:
>>>> A    B    C    T    Lengths
>>>> 1    4.0    0.0015258789    18    c(1,2,3)
>>>> 1    1.0    0.0017166138    24    c(1,1,4)
>>>>
>>>> So all the columns are numeric values, except Lengths, which is supposed
>>>> to
>>>> be an variable length array of integers.
>>>> How can I make R read them as arrays of integers? Or otherwise, convert
>>>> the
>>>> character array to an array of integers.
>>>> When I read the file, I do it like this
>>>> t1 = read.table(file=paste("./borrar.dat",sep=""), header=T,
>>>> colClasses=c("numeric", "numeric", "numeric", "numeric", "array"))
>>>> But the 5th column is treated as an array of characters, and when trying
>>>> to
>>>> convert it to another class of data, I either
>>>> get two strings "c(1,2,3)" and "c(1,1,4)" or using a toRaw converter, I
>>>> get
>>>> the corresponding ASCII ż? values.
>>>> Should the input be modified in order to be able to read it as an array
>>>> of
>>>> integers?
>>>>
>>>> Thank you for your help.
>>>> Balpo
>>>>
>>>> ______________________________________________
>>>> R-help@r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>>
>>>
>>>
>> ______________________________________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>

	[[alternative HTML version deleted]]

