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.