lol. you´re right, the " " is special.

On 29.04.2010, at 18:34, David Winsemius wrote:

> That was copied from the help page the comes up with:
> 
> ?"$"
> 
> It is rather "special".
> 
> -- David.
> 
> On Apr 29, 2010, at 12:26 PM, Bunny, lautloscrew.com wrote:
> 
>> Nice, thx. Which manual do you use ? an introduction to R ? Or something 
>> special ?
>> 
>> matt
>> 
>> 
>> On 29.04.2010, at 15:25, David Winsemius wrote:
>> 
>>> 
>>> On Apr 29, 2010, at 9:03 AM, Bunny, lautloscrew.com wrote:
>>> 
>>>> Sorry for that offlist post, did not mean to do it intentionally. just hit 
>>>> the wrong button. Unfortunately this disadvantage is not written next to $ 
>>>> in the manual.
>>> 
>>> Hmmm. Not my manual:
>>> 
>>> "Both [[ and $ select a single element of the list. The main difference is 
>>> that $ does not allow computed indices, whereas [[does."
>>> 
>>> 
>>> It also says that the correct equivalent using extraction operators of "$" 
>>> would be:
>>> 
>>> x$name  ==  x[["name", exact = FALSE]]
>>> -- 
>>> David.
>>>> 
>>>> 
>>>>> 
>>>>> On Apr 29, 2010, at 2:34 AM, Bunny, lautloscrew.com wrote:
>>>>> 
>>>>>> David,
>>>>>> 
>>>>>> With your help i finally got it. THX!
>>>>>> sorry for handing out some ugly names.
>>>>>> Reason being: it´s a german dataset with german variable names. With 
>>>>>> those german names you are always sure you dont use a forbidden
>>>>>> name. I just did not want to hit one of those by accident when changing 
>>>>>> these names for the mailing list. columna is just the latin term for 
>>>>>> column :) . Anyway here´s what worked
>>>>>> 
>>>>>> note: I just tried to use some more "real" names here.
>>>>>>          
>>>>>> recode_items = function(dataframe,question_number,medium=3){
>>>>>>          
>>>>>>          #note column names of the initial data.frame are like 
>>>>>> Question1,Question2 etc. Using [,1] would not be very practical since    
>>>>>>          # the df contains some other data too. Indexing by names seemed 
>>>>>> to most comfortable way so far.
>>>>>>          question<-paste("Question",question_number,sep="")
>>>>>>          # needed indexing here that understands characters, that´s why 
>>>>>> going with [,question_number] did not work.
>>>>>>          dataframe[question][dataframe[question]==3]=0
>>>>> 
>>>>> This would be more typical:
>>>>> 
>>>>> dataframe[dataframe[question]==3, question] <- 0
>>>>> 
>>>>>>          
>>>>>>          
>>>>>>          return(dataframe)
>>>>>>  
>>>>>>  }
>>>>>> 
>>>>>> recode_items(mydataframe,question_number,3)
>>>>>> # this call uses the dataframe that contains the answers of survey 
>>>>>> participants. Question number is an argument that selects the question 
>>>>>> from the dataframe that should be recoded. In surveys some weighting 
>>>>>> schemes only respect extreme answers, which is why the medium answer is 
>>>>>> recoded to zero. Since it depends on the item scale what medium actually 
>>>>>> is, I need it to be an argument of my function.
>>>>>> 
>>>>>>> Did you want a further logical test with that "=1" or some sort of 
>>>>>>> assignment???
>>>>>> 
>>>>>> So yes, it´s an assignment.
>>>>>> 
>>>>>>>> Moral: Generally better to use "[" indexing.
>>>>>> 
>>>>>> That´s what really made my day (and it´s only 9.30 a.m. here ) . Are 
>>>>>> there exceptions to rule?
>>>>> 
>>>>> Not that I know of.
>>>>> 
>>>>>> I just worked a lot with the $ in the past.
>>>>> 
>>>>> "$colname" is just syntactic sugar for either "["colname"]" or "[ 
>>>>> ,"colname"]" and it has the disadvantage that colname is not evaluated.
>>>>> 
>>>>> 
>>>>>> 
>>>>>> thx
>>>>>> 
>>>>>> matt
>>>>>> 
>>>>>>  
>>>>>> 
>>>>>> 
>>>>>> On 29.04.2010, at 00:56, David Winsemius wrote:
>>>>>> 
>>>>>>> 
>>>>>>> On Apr 28, 2010, at 5:45 PM, David Winsemius wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> On Apr 28, 2010, at 5:31 PM, Bunny, lautloscrew.com wrote:
>>>>>>>> 
>>>>>>>>> Dear all,
>>>>>>>>> 
>>>>>>>>> i have a problem with processing dataframes within a function using 
>>>>>>>>> the "$".
>>>>>>>>> Here´s my code:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> recode_items = function(dataframe,number,medium=2){
>>>>>>>>>       
>>>>>>>>>       # this works
>>>>>>>>>       q<-paste("columna",number,sep="")
>>>>>>>> 
>>>>>>>> Do your really want q to equal "columna2" when "number" equals 2?
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>       # this does not work, particularly because "dataframe" is not 
>>>>>>>>> processed
>>>>>>>>>       # dataframe should be: givenframe$columnagivennumber
>>>>>>>>>       a=dataframe$q[dataframe$q==medium]=1
>>>>>>> 
>>>>>>> Did you want a further logical test with that "=1" or some sort of 
>>>>>>> assignment???
>>>>>>> 
>>>>>>>> 
>>>>>>>> a) Do you want to work on the column from dataframe ( horrible name 
>>>>>>>> for this purpose IMO) with the name "columna2"? If so, then start with
>>>>>>>> 
>>>>>>>> dataframe[ , q ]
>>>>>>>> 
>>>>>>>> .... the "q" will be evaluated in this form whereas it would not when 
>>>>>>>> used with "$".
>>>>>>>> 
>>>>>>>> b) (A guess in absence of explanation of a goal.) Now do you want all 
>>>>>>>> of the rows where that vector equals "medium"? If so ,then try this:
>>>>>>>> 
>>>>>>>> dataframe[ dataframe[ , q ]==2 , ]  # untested in the absence of data
>>>>>>> 
>>>>>>> Ooops. should have been:
>>>>>>> 
>>>>>>> dataframe[ dataframe[ , q ]==medium , ] #since both q and medium will 
>>>>>>> be evaluated.
>>>>>>> 
>>>>>>> 
>>>>>>>> 
>>>>>>>> Moral: Generally better to use "[" indexing.
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> David.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>       return(a)       
>>>>>>>>> 
>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> If I call this function, i´d like it to return my  dataframe.  The 
>>>>>>>>> problem appears to be somewhere around the $. I´m sure this not too 
>>>>>>>>> hard, but somehow i am stuck. I´ll keep searchin the manuals.
>>>>>>>>> Thx for any help in advance.
>>>>>>>>> 
>>>>>>>>> best
>>>>>>>>> 
>>>>>>>>> matt
>>>>>>>>>       [[alternative HTML version deleted]]
>>>>>>>>> 
>>>>>>>>> ______________________________________________
>>>>>>>>> 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.
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>>> David Winsemius, MD
>>> West Hartford, CT
>>> 
>> 
> 
> David Winsemius, MD
> West Hartford, CT
> 

______________________________________________
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.

Reply via email to