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.