That is an interesting fix Duncan suggested and it sounds now like everything
WORKED as intended in data.table except that any checker being used externally
is not able to del with things that look like a variable but are actually not a
variable currently visible except within a function that is
Naresh,
I think your details suggest your earlier request was not well defined.
Your problem looks like this line of code was wrong and did something you did
not expect. It should be easy to fix. But I note you changed Prices to use the
data.table package. Mind you, I thought the function
Naresh,
I am not sure how you are creating your data.frame so it has no, I think,
column names. There are two scenarios including one where it is not really a
valid data.frame and one where it can be handled before any other use as shown
below. If it cannot be used, you might need to modify how
John,
Others have helped educate you on your initial guesses and I just want to
add that "str()" is not the only function people use to see their data.
People often want to also look at what class(es) an object has or the names
inside it and so on or what dimensions it contains. There are various
John,
What would be nice is not necessarily trivial.
Consider an example. After running a line of code with an assignment statement,
did you know the last value has been saved in .Last.value as in this snippet of
code:
> x <- 12
> .Last.value
[1] 12
> y <- .Last.value**2
> y
[1] 144
> .Last.va
Arguably, R was not designed or evolved for truly novice users, nor really was
Python or just about all computer languages. As they evolved and became in many
ways more powerful, they tended to get ever less user friendly in the way you
are asking for and gotten so bloated that many features are
Like many things in R, the original way things were done may have ossified
in place and even if largely unknown packages came along, may not be known
by many.
The topic John is talking about is NOT in my mind about systems programming
at all. It is about writing any function where you want control
Long time readers indeed.
That article was from 2009!
-Original Message-
From: R-help On Behalf Of Enrico Schumann
Sent: Sunday, December 15, 2024 5:27 AM
To: Bill Dunlap
Cc: r-help@r-project.org
Subject: Re: [R] [off-topic] crossword
On Fri, 13 Dec 2024, Bill Dunlap writes:
> Cross
It is probably a bit late in most existing languages to change behaviors all
over the code. Languages like C often allowed many kinds of shortcuts that
happened to work because 0 was false and 1 and most other things were true.
Similarly, pointers were used in a Boolean way as in the way they co
Ivo,
To be a bit clearer, your problem was not with mean(0 but with any function
which is expecting a Boolean setting of TRUE/FALSE and instead got a
nonsense value of 20.
This gets even weirder in languages which automagcally transform many other
values to be considered true. Languages like C co
Not to beat a dead horse, but if they wanted an answer of CODES, then why not
use S instead of R in the …
From: Bill Dunlap
Sent: Friday, December 13, 2024 3:47 PM
To: avi.e.gr...@gmail.com
Cc: Olivier Crouzet ; r-help@r-project.org
Subject: Re: [R] [off-topic] crossword
Crossword answer
I hesitate to say this and stray back on topic.
R is basically an extension of C as it was written in C and many added
functions end up being rewritten in a variant of C, albeit other languages may
at times intrude. Something similar could be said of C-Python.
But I truly doubt the ones making
Since this is a discussion about a specific crossword puzzle the right answer
has to fit with any words coming in from the other direction or it gets cross.
I thought the clue hinted it started with C and ended with R and that the
languages were chosen for no reason other than that they helped m
Actually, tangentially, JC, I have a deep suspicion that many computer
languages are not written to solve problems. They are sometimes an effort by
someone to implement a new paradigm different than what others have tried
before or to protect the programmer from themselves or to demand extensive
ri
Akshay,
Your question has way too many answers.
SQL has a long history and early versions came long before R arrived on the
scene. There is a huge embedded base of hardware and software dedicated to
managing databases. It has some features that most R programs do not even
dream of doing. Besides
What exactly is stopping you, Carlos?
Do you know where the reagent dataset is? I don't. Is it being loaded from a
known format like a .CSV file, or part of an EXCEL spreadsheet and so on?
Does it come with a function in a package that you load and then invoke to
load it or make it visible? Or, s
John,
I hate to break it to you that ggplot2 is not part of base R. "plot" and
maybe lattice qualify.
But I can work with you. Try this:
ggplot(data=mydata,
aes(x=AQIGroup,
y=Freq,
group=Day,
color=Day)) +
geom_point() +
geom_line()
The main change b
John,
Thanks for enlightening us so we better understand.
I won't argue with your wish to learn to do things in base R first. I started
that way, myself, and found lots of the commands not particularly easy to fit
into a single worldview. Many functions I read about were promptly forgotten,
es
I was wondering along similar lines, Bert.
One way to get help is to ask how to do some single step of a larger strategy.
That can lead to answers that may not be as applicable to the scenario.
Another way would be to include a synopsis of what they are trying to do.
But, as John says he is try
John,
If I understood you, you want to take the minimum value of Day for each
grouping by ID and add a new column to contain that. Right?
There are likely many ways to do this in base R, but I prefer the
dplyr/tidyverse package in which you can use group_by(ID) piped to
mutate(FirstDay = min(Day
I am curious what you mean by "having a graph."
If you mean something drawn on paper or an image on your screen, then
extracting specific data at various points is an effort, perhaps more so if
a wind rose plot does not contain all you need. If you have something like a
ggplot2 object, it tends to
I have had experiences with people too daunted by a programming language
where all kinds of small mistakes just generate an error. They often just
want to do a few things and do not want to learn programming in depth.
They want the kind of GUI interface that was often made for people coming
from s
Jacob,
I am curious about your request for a "minimum" and it makes me wonder what
aspects of switching to Windows 11 from earlier versions (no longer being
supported around now) have some impact on R.
Many people want to be running as recent a version of R as possible, albeit
there can be proble
Grant, I think,
Your NO SUBJECT message confused me as it seems a continuation of an earlier
discussion of a new and likely irrelevant metric of the worthiness of R
programs.
Did you make a mistake here? I tried your code as well and the results did
not look like what the OP asked for.
It took m
Admit it, Rolf. Haven't you wondered if S, in a more private way, is sexier
than R?
OK, kidding aside, we have talked this to death.
Just FYI, the conversation was stimulating for some of us and I have continued
on my own and located functions I see as useful in the stringi and stringr
package
John,
I thought some more about the topic overnight. Of course, "sexy" is not a
great analogy.
But consider a concept of how to do something cleverly or creatively or in
ways others might not easily come up with as the standard way(s) are
commonly used.
I threw something together in middle of th
Calum,
I know Rolf for a while so I will not accept any calumny about his intentions.
He stated what he wanted, albeit imperfectly, and interacted with us as we came
up with ideas.
I have seen others who ask some open-ended question, often using a brand new
idea, and do not interact. Som
I see a book coming:
"666 ways to do the same thing in R ranked by sexiness."
Kidding aside, if you look under the covers of some of the functions we are
using, we may find we are taking steps back as some of them use others and
perhaps more functionality than we need.
But for a new rea
You are, of course, correct, John. But in a strange way, many people end up
finding their wife or husband not so sexy after many years and find others
now seem to be.
R is not about sex and it was not the ideal choice of words.
I think what was wanted was something brief rather than taking many l
Rold,
We need to be clear on what makes an answer sexy! LOL!
I decided it was sexy to do it in a way that nobody (normal) would and had
not suggested yet.
Here is an original version I will explain in a minute. Or, maybe best a bit
before. Hee is the unformatted result whicvh is a tad hard to re
Rolf,
I, and many others have come up with an assortment of solutions that seem to
work, often by ignoring whatever you intend by mentioning f as a factor.
But consider a dumb question. Why are you starting with a list of vectors,
with odd pseudo-numeric names?
Many of the solutions started by c
Rolf,
This works, albeit you may not be thrilled:
x <- list(`1` = c(7, 13, 1, 4, 10),
`2` = c(2, 5, 14, 8, 11),
`3` = c(6, 9, 15, 12, 3))
as.vector(rbind(x[[1]], x[[2]], x[[3]]))
-- output:
> as.vector(rbind(x[[1]], x[[2]], x[[3]]))
[1] 7 2 6 13 5 9 1 14 15 4 8 1
Stefano,
I see you already have an answer that works for you.
Sometimes you want to step back and see if some modification makes a problem
easier to solve.
I often simply switch to using tools in the tidyverse such as dplyr for parts
of the job albeit much of the same can be done using functio
Bert,
Although the Яticle was interesting, I have to wonder how much publishing there
has been in formal journals related to R, especially recently, that is of a
research variety.
I am thinking of an example and wonder if we picked something that is often
re-implemented by many parties such as
Excellent message, Gabor.
Many tools we use are quite flexible and I just want to mention dplyr does have
ways to use something like mutate to rename a column, albeit rename(0 is more
specifically designed to do the job.
Here is an example of how mutate() can rename by making a new column and
As an intellectual exercise it can be reasonable to discuss these ways to use a
pipe even in places where it may not have been seen as something anyone would
even try to use it.
In actual code, it is often better to not make overly cute constructions that
others (or yourself a month later) will
Bert,
You need to consider LHS vs RHS functionality.
Before I start, I would have done your example setup lie this:
trio <- 1:3
z <- data.frame(a = trio, b = letters[trio])
Just kidding!
Syntactic sugar means you are calling this function:
> `names<-`
function (x, value) .Primitive("names<-"
Just to be clear, Denis, I am not in any way associated with anybody or
anything and just read about it on a news feed not from POSIT directly.
I am aware it is based on existing functionality and have used possibly similar
editors for other languages. I did try possibly one touted by Microsoft
This is just an FYI based on a news item I saw tonight.
There have been discussions on what editors or environments people can use
when working with R and I personally have mostly been using versions of
RSTUDIO and lately for both R and python. As often noted, RSTUDIO is a
product of a company, c
Unfortunately, Adrian, even trying to coerce a string like "--" to numeric just
produces an NA and comparison fails:
> as.numeric("--") < 0
[1] NA
Warning message:
NAs introduced by coercion
The same is true of anything that is character as it cannot be coerced.
> as.numeric("anything") < 0
[
I had the same FIRST impression which could have made sense as in writing
the data back out to a file with a similar name and that would have been
trivial. I mean if you had exactly three, a loop would not even be
particularly useful versus writing two lines, copying them and editing the
latter two
I fully agree with Jeff that the best way to use ANY language is to evaluate
the language in terms of not just the capabilities it offers but also the
philosophy behind what it was created for and how people do things and just
grok it and use it mostly in the way intended. I do that with all the
la
Laurent,
Thank you for introducing me to a package I did not know existed as I use
features like list comprehension in python all the time and could see using it
in R now that I know it is available.
As to why you see your example as slow, I see you used a fairly complex and
nested expression
Bert,
I think you read my message differently than I expected. I approached the
request as an exercise in evaluating various ways something can be done and
maybe choosing a simple one or choosing a more general one as needed.
I provided some solutions along the lines you mentioned and THEN also
For the particular example you asked for, consider the "each" you can use
with rep()
rep(1:13, each=84)
This is what it does for a shorter version of 4 each:
> rep(1:13, each=4)
[1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6
7 7 7 7 8 8 8 8 9 9 9 9 10 10
John,
Maybe you can clarify what you want the output to look like. It took me a
while to realize what you may want as it is NOT properly described as
wanting rowsums.
There is a standard function called rowMeans() that probably does what you
want if you want the mean of all rows as in:
> rowMean
Although there may well be many ways to do what is being asked for with the
tidyverse, sometimes things are simple enough to do the old-fashioned way.
The request seems to have been to do something to all rows in ONE specific
group but was phrased in the sense of wanting to know which group your
Nick,
As Jeff said, we don't know what you tried and what did not work.
There are built-in and probably package versions but have you tried
something like list.files()?
You can tweak it to get the files you want by doing something like:
-change directory to HERE
- here.files <- list.files(recur
I think it might be fair to say that the discussion is becoming a tad wider
than whether you want your data structures indexed starting from 0 or 1.
Programming languages have added functionality to do many things on top of
the simple concept of accessing or changing the nth element one at a time.
Hans,
It is a good question albeit R made a conscious decision to have indices
that correspond to things like row numbers and thus start with 1. Some
others have used a start of zero but often for reasons more related to
making use of all combinations of the implementation of integers on many
mach
Yes, Lennart, I have been looking at doing something like you say by using the
vectorized ways the tidyverse is now offering.
For my application, if the naming was consistent, an approach like yours is
good, albeit has to be typed carefully. When I cannot control the names but
have to lump th
Richard,
The code you show is correct and it does not include where you say ChatGTP
explained it was 33/26 rather than the correct 42/216.
I gather it have the proper fraction for the other two scenarios.
So what would cause such a localized error?
The method chosen is to try all possible combi
Thanks everyone and any/all reading this. I think I got my answer. And, no, I
suspected I did not need to provide a very specific example, at least not yet.
The answer is that my experiment was not vectorized while using dplyr verbs
like mutate do their work implicitly in a vectorized way.
Thi
Base R has generic functions called any() and all() that I am having trouble
using.
It works fine when I play with it in a base R context as in:
> all(any(TRUE, TRUE), any(TRUE, FALSE))
[1] TRUE
> all(any(TRUE, TRUE), any(FALSE, FALSE))
[1] FALSE
But in a tidyverse/dplyr environment, it retur
Dave,
Your method works for you and seems to be a one-time fix of a corrupted data
file so please accept what I write not as a criticism but explaining my
alternate reasoning which I suspect may work faster in some situations.
Here is my understanding of what you are doing:
You have a file in
It sounds like the discussion is now on how to clean your data, with a twist.
You want to clean it before you can properly read it in using standard methods.
Some of those standard methods already do quite a bit as they parse the data
such as looking ahead to determine the data type for a column
John,
Your reaction was what my original reaction was until I realized I had to
find out what a DEM file was and that contains enough of the kind of
depth-dimension data you describe albeit what may be a very irregular cross
section to calculate for areas and thence volumes.
If I read it correctl
Chris, since it does indeed look like homework, albeit a deeper looks
suggests it may not beI think we can safely answer the question:
>Is there any way to write codes to do this in R?
The answer is YES.
And before you ask, it can be done in Python, Java, C++, Javascript, BASIC,
FORTRAN and prob
Just FYI, the R interpreter typically saves the last value returned briefly
in a variable called .Last.value that can be accessed before you do anything
else.
> sin(.5)
[1] 0.4794255
> temp <- .Last.value
> print(temp)
[1] 0.4794255
> sin(.666)
[1] 0.6178457
> .Last.value
[1] 0.6178457
> temp
[1]
Thank you Duncan, you explained quite a bit.
I am unclear how this change causes the problem the OP mentioned.
It is an example of people using a clever trick to get what they think they
want that could be avoided if the original program provided a hook. Of
course the hook could be used more mali
With all this discussion, I shudder to ask this. I may have missed the
answers but the discussion seems to have been about identifying and solving
the problem rapidly rather than what maybe is best going forward if all
parties agree.
What was the motivation for what RSTUDIO did for their version a
This may be a dumb question and the answer may make me feel dumber.
I have had trouble for years with R packages wanting Rtools on my machine
and not being able to use it. Many packages are fine as binaries are
available. I have loaded Rtools and probably need to change my PATH or
something.
Bu
Steven,
It depends what you want to do. What you are showing seems to replace the
values stored in "data" each time.
Many kinds of loops will do that, with one simple way being to store all the
filenames in a list and loop on the contents of the list as arguments to
read.csv.
Since you show f
Nick, obviously figuring out the problem is best but you may want to deal
with the symptom.
RSTUDIO lets you adjust the sizes of the various windows and enlarging the
window (lower right normally) where the graph is shown may be a first
attempt if the problem is display space.
And note RSTUDIO
Emily,
I too copied/pasted your code in and it worked fine. I then asked for the
function definition and got it.
Did you put the entire text in? I mean nothing extra above or below except
maybe whitespace or comments?
What sometimes happens to make the code incomplete is to leave out a
matching
Having read all of the replies, it seems there are solutions for the
question and the OP points out that some solutions such as making the
document twice will affect the creation date.
I suspect the additional time to do so is seconds or at most minutes so it
may not be a big deal.
But what about
There are many techniques Callum and yours is an interesting twist I had not
considered.
Yes, you can specify what integer a factor uses to represent things but not
what I meant. Of course your trick does not work for some other forms of data
like real numbers in double format. There is a cos
There may be a point to consider about the field containing dates in the
request below. Yes, much code will "work" just fine if the column are is seen
as text as you can group by that too. The results will perhaps not be in the
order by row that you expected but you can do your re-sorting perha
Yes, Bert. At first glance I thought it was one of the merge/joins and then
wondered at the wording that made it sound like the ids may not be one per
column.
IFF the need is the simpler case, it is a straightforward enough and common
need. An example might make it clear enough so actual code c
To be fair, Jordan, I think R has some optimizations so that the arguments
in some cases are NOT evaluated until needed. So only one or the other
choice ever gets evaluated for each row. My suggestion merely has
typographic implications and some aspects of clarity and minor amounts of
less memory a
Just a minor point in the suggested solution:
df$LAP <- with(df, ifelse(G=='male', (WC-65)*TG, (WC-58)*TG))
since WC and TG are not conditional, would this be a slight improvement?
df$LAP <- with(df, TG*(WC - ifelse(G=='male', 65, 58)))
-Original Message-
From: R-help On Behalf Of Jo
Jef, your terse reply was so constructive that you converted me! LOL!
That is an interesting point though that I remain a bit unclear on.
Both data.frame and as.data.frame can be used in some ways similarly as in:
> data.frame(matrix(1:12, nrow=3))
X1 X2 X3 X4
1 1 4 7 10
2 2 5 8 11
3 3
Борис,
Try this where you tell matrix the column names you want:
nouns <- as.data.frame(
matrix(c(
"gaggle",
"geese",
"dule",
"doves",
"wake",
"vultures"
),
ncol = 2,
byrow = TRUE,
dimnames=list(NULL, c("collective", "category"
Result:
> nouns
Paul,
I have snipped away your long message and want to suggest another approach
or way of thinking to consider.
You have received other good suggestions and I likely would have used
something like that, probably within the dplyr/tidyverse but consider
something simpler.
You seem to be viewing a
Leonard,
Since it now seems a main consideration you have is speed/efficiency, maybe a
step back might help.
Are there simplifying assumptions that are valid or can you make it simpler,
such as converting everything to the same case?
Your sample data was this and I assume your actual data is s
Rui,
The problem with searching for elements, as with many kinds of text, is that
the optimal search order may depend on the probabilities of what is involved.
There can be more elements added such as Unobtainium in the future with
whatever abbreviations that may then change the algorithm you m
Arnaud,
Short answer may be that the tibble data structure will not be supporting row
names and you may want to simply save those names in an additional column or
externally.
My first thought was to simply save the names you need and then put them back
on the tibble. In your code, something l
Charity,
As some of the answers I have seen show, your question is not clear.
You need to be clear on what you mean about R software and other concepts
before an answer makes sense.
The Base version of R may come on your computer already but likely has been
installed from some external source, o
David,
This may just be the same as your earlier problem. When the type of a column is
guessed by looking at the early entries, any non-numeric entry forces the
entire column to be character.
Suggestion: fix your original EXCEL FILE or edit your CSV to remove the last
entries that look just li
David,
You have choices depending on your situation and plans.
Obviously the ideal solution is to make any CSV you save your EXCEL data in to
have exactly what you want. So if your original EXCEL file contains things like
a blank character down around row 973, get rid of it or else all lines to
This discussion is sooo familiar.
If you want indefinite precision arithmetic, feel free to use a language and
data type that supports it.
Otherwise, only do calculations that fit in a safe zone.
This is not just about this scenario. Floating point can work well when adding
(or subtracting) tw
This topic is getting almost funny as there are an indefinite ever-sillier
set of ways to perform the action and even more if you include packages like
purr.
If mymat is a matrix, several variants work such as:
> mymat
[,1] [,2] [,3] [,4]
[1,]147 10
[2,]258 11
[3,
Based on a private communication, it sounds like Steven is asking the question
again because he wants a different solution that may be the way this might be
done in another language. I think he wants to use loops explicitly and I
suspect this may be along the lines of a homework problem for him.
Eric,
I fully agreed with you that anyone doing serious work in various projects such
as machine learning that make heavy use of mathematical data structures would
do well to find some decent well designed and possibly efficient packages to do
much of the work rather than re-inventing their ow
Eric,
I am not sure your solution is particularly economical albeit it works for
arbitrary arrays of any dimension, presumably. But it seems to involve
converting a matrix to a tensor just to undo it back to a vector. Other
solutions offered here, simply manipulate the dim attribute of the data
Steve,
As Iris pointed out, some implementations of a matrix are actually of a vector
with special qualities. There are sometimes choices whether to store it a row
at a time or a column at a time.
In R, your data consisted of the integers from 1 to 20 and they clearly are
stored a column at a
[See the end for an interesting twist on moving a column to row.names.]
Yes, many ways to do things exist but it may make sense to ask for what the
user/OP really wants. Sometimes the effort to make a brief example obscures
things.
Was there actually any need to read in a file containing comma-
Val,
A data.frame is not quite the same thing as a matrix.
But as long as everything is numeric, you can convert both data.frames to
matrices, perform the computations needed and, if you want, convert it back
into a data.frame.
BUT it must be all numeric and you violate that requirement by havin
Hadley,
Thanks and I know many such things exist. I simply found it interesting that
what was mentioned seemed simpler as just being a converter of text to make a
bitmap type image. Now if I want a simulated image of a cat riding a motorcycle
while holding an Esperanto Flag, sure, I would not e
Jim,
I am not sure what your example means but text to image conversion can be
done quite easily in many programming environments and does not need an AI
unless you are using it to hunt for info. I mean you can open up many Paint
or Photo programs and look at the menus and often one allows you to
Just to bring it back to R, I want to point out that what many R programmers do
is not that different. If you develop some skills at analyzing some kinds of
data and have a sort of toolchest based on past work, then a new project along
similar lines may move very quickly. After a while, you may
Anupam,
Thanks for explaining you are talking about factors.
I see my friend Adrian has pointed out reasons you may want to use a package he
built called “declared” but my answer will be within the regular R domain as
you asked.
You should read up a bit on factors in a book, not just blindl
John,
I am a tad puzzled at why your code does not work so I tried replicating it.
Let me say you are not plotting what you think. When you plot points using
characters, it LOOKS like it did something but not really. It labels four
equally apart lines (when your data is not linear) and you are ge
Anupam,
Your question, even after looking at other messages, remains a bit unclear.
What do you mean by "labels"? What you mean by variables and values and how
is that related to factors?
An example or two would be helpful so we can say more than PROBABLY.
Otherwise, you risk having many people
Interesting to read all the answers. Personally, I was a bit irked to see
that using a combination of assignments using rownames() and colnames() did
not work as one canceled what the other had done.
But it turns out if we listed to what John really wanted versus what he said
he wanted, then a fai
Chris,
Consider breaking up your task into multiple passes.
And do them in whatever order preserves what you need.
First, are you talking about brackets as in square brackets, or as in your
example, parentheses?
If you are sure you have no nested brackets, your requirement seems to be that
an
I was rushing out Phil so let me amend what I wrote. As others noted, this is
fairly beginner stuff. If you have more such questions, besides reading up,
please consider sending questions to the Tutor mailing list where there is more
patience. 😉
You wanted to change selected small values to 0.0
Phil,
What have you tried. This seems straightforward enough.
Could you clarify what you mean by NULL?
In R, it is common to use NA or a more specific version of it.
So assuming you have two vectors containing floats with some NA, then:
C <- A*B
Will give you the products one at a time if the
Richard, it is indeed possible for different languages to choose different
approaches.
If your point is that an R named list can simulate a Python dictionary (or for
that manner, a set) there is some validity to that. You can also use
environments similarly.
Arguably there are differences i
Bert,
I stand corrected. What I said may have once been true but apparently the
implementation seems to have changed at some level.
I did not factor that in.
Nevertheless, whether you use an index as a key or as an offset into an
attached vector of labels, it seems to work the same and I th
1 - 100 of 157 matches
Mail list logo