[R] Quick R syntax question

Bert Gunter gunter.berton at gene.com
Mon Jun 20 18:40:49 CEST 2011


Sorry, I was unclear. The comment after the second should be:

 z[ ,a]   # the column of z whose name is the value of the object a

-- Bert

On Mon, Jun 20, 2011 at 9:38 AM, Bert Gunter <bgunter at gene.com> wrote:
> Ben:
>
> 1. One doesn't ask questions like this. Syntax is syntax.
>
> 2. This has nothing to do with paste; it's the syntax of "[" ,
> subscripting/extraction
>
> 3. But it does make sense:
>
> a <- "b"
> z <- data.frame(a=1:3, b=4:6)
> z[ ,"a"]  # the "a" column of z
> z[ ,a]   # the column of z with the value of the object a
>
> HTH,
>
> -- Bert
>
>
> On Mon, Jun 20, 2011 at 9:21 AM, Ben Ganzfried <ben.ganzfried at gmail.com> wrote:
>> Thanks!  Very glad you pointed me to the paste function, it looks very
>> helpful.
>>
>> I have a quick follow-up after reading through the online tutorial on the
>> "paste" function:
>>
>> Why do we need quotation marks around "Major Gleason" and "Minor Gleason"
>> in: output = paste(df [,'Major.Gleason'],  df[ ,'Minor.Gleason'], sep='+')?
>> The "paste" function is going to concatenate the first and second parameters
>> and separate them by the "+" sign, so I'm not clear why we need to put
>> quotation marks around the dataframe column headers...
>>
>> Thanks,
>>
>> Ben
>>
>>
>> On Mon, Jun 20, 2011 at 11:58 AM, David Winsemius <dwinsemius at comcast.net>wrote:
>>
>>>
>>> On Jun 20, 2011, at 11:47 AM, Luke Miller wrote:
>>>
>>>  If we assume that your data are in a data frame (which doesn't allow
>>>> spaces in column names, hence the periods in the call below):
>>>>
>>>>  df = data.frame(Major.Gleason = c(4,5,2,3), Minor.Gleason = c(3,2,4,3))
>>>>>
>>>>
>>>> You can paste together the contents of the two columns with a plus
>>>> sign in between using the paste() function. The sep='' option at the
>>>> end of the function call specifies that no spaces should be included
>>>> between pasted items.
>>>>
>>>>  output = paste(as.character(df [,'Major.Gleason']), '+', as.character(df[
>>>>> ,'Minor.Gleason']), sep='')
>>>>>
>>>>
>>> I do not think the as.character is needed. Coercion to character is
>>> implicit in the use of paste(). And  the sep argument could be "+".
>>>
>>> output = paste(df [,'Major.Gleason'],  df[ ,'Minor.Gleason'], sep='+')
>>>
>>> --
>>> David.
>>>
>>>
>>>
>>>> The new object 'output' is a character vector containing the 4 strings
>>>> you're after:
>>>>
>>>>  print(output)
>>>>>
>>>> [1] "4+3" "5+2" "2+4" "3+3"
>>>>
>>>>
>>>> On Mon, Jun 20, 2011 at 11:31 AM, Ben Ganzfried <ben.ganzfried at gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>> Hi --
>>>>>
>>>>> I had a pretty quick R question since unfortunately I have not been able
>>>>> to
>>>>> find an answer on Google.  It shouldn't take much more than a minute to
>>>>> answer.
>>>>>
>>>>> I'm trying to add up the major gleason grade and minor gleason grade for
>>>>> an
>>>>> analysis of patients with prostate cancer.  One column has values under
>>>>> "Major Gleason" and another column has values under "Minor Gleason."  For
>>>>> example,
>>>>> Major Gleason     Minor Gleason
>>>>> 4                         3
>>>>> 5                         2
>>>>> 2                         4
>>>>> 3                         3
>>>>>
>>>>> I want my output to be:
>>>>> "4+3"
>>>>> "5+2"
>>>>> "2+4"
>>>>> "3+3"
>>>>>
>>>>> The quasi-pseudocode in Java is basically:
>>>>>
>>>>> major = column$majorGleason
>>>>> minor = column$minorGleason
>>>>> for item in len(Major Gleason) {
>>>>>  string s = major(item) "+" minor(item);
>>>>> }
>>>>> return s;
>>>>>
>>>>> But trying the same idea in R:
>>>>>
>>>>> string <- major "+" minor
>>>>>
>>>>> gives me an error: "unexpected string constant in..."
>>>>>
>>>>> I would greatly appreciate any help.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Ben
>>>>>
>>>>>       [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________**________________
>>>>> R-help at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>>>> PLEASE do read the posting guide http://www.R-project.org/**
>>>>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ___________________________
>>>> Luke Miller
>>>> Postdoctoral Researcher
>>>> Marine Science Center
>>>> Northeastern University
>>>> Nahant, MA
>>>> (781) 581-7370 x318
>>>>
>>>> ______________________________**________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>>> PLEASE do read the posting guide http://www.R-project.org/**
>>>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>>> David Winsemius, MD
>>> West Hartford, CT
>>>
>>>
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at 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.
>>
>
>
>
> --
> "Men by nature long to get on to the ultimate truths, and will often
> be impatient with elementary studies or fight shy of them. If it were
> possible to reach the ultimate truths without the elementary studies
> usually prefixed to them, these would not be preparatory studies but
> superfluous diversions."
>
> -- Maimonides (1135-1204)
>
 Bert Gunter
 Genentech Nonclinical Biostatistics



More information about the R-help mailing list