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
Javad,
There may be nothing wrong with the methods people are showing you and if it
satisfied you, great.
But I note you have lots of data in over a quarter million rows. If much of the
text data is redundant, and you want to simplify some operations such as
changing some of the values to
The problem being discussed is really a common operation that R handles
quite easily in many ways.
The code shown has way too many things that do not fit to make much sense
and is not written the way many R programmers would write it.
Loops like the one used are legal but not needed.
As has bee
Jeff,
I wish I could give you an answer to a very specific question.
You have lots of numbers in a vector representing whatever "probabilities"
mean something to you. There are currently no names associated with them.
And you want to make some kind of graph using ggplot.
So, to be quite clear, g
Jeff,
The number of items is not relevant except insofar as your vector of
probabilities is in the same order as the other vector and the same length.
If for example you had a vector of test scores for 10,000 tests and you
calculated the probability in the data of having a 100, then the probabili
Jeff R, it would be helpful if your intent was understood.
For example, did you want output as a column of labels c("A", "B", "C") and
another adjacent of c(0.0011566127, 0.0009267028, 0.0081623324) then you
could do:
data.frame(labels=c("A", "B", "C"), data=c(0.0011566127, 0.0009267028,
0.008162
Evan,
Yes, once you know a bit about the details, all kinds of functions are
available to solve problems without going the hard way.
But the names() function is taught fairly widely and did you also pick up on
the fact that it can be used on both sides so it also sets the names?
> # Create a lis
All true Jeff, but why do things the easy way! LOL!
My point was that various data structures, besides the list we started with,
store the names as an attribute. Yes, names(listname) works fine to extract
whatever parts they want. My original idea of using a data.frame was because
it creates names
Evan,
List names are less easy than data.frame column names so try this:
> test <- list(a=3,b=5,c=11)
> colnames(test)
NULL
> colnames(as.data.frame(test))
[1] "a" "b" "c"
But note an entry with no name has one made up for it.
> test2 <- list(a=3,b=5, 666, c=11)
> colnames(data.frame(test2))
[
Leonard,
It can be helpful to spell out your intent in English or some of us have to go
back to the documentation to remember what some of the operators do.
Your text being searched seems to be an example of items between comas with an
optional space after some commas and in one case, nothing b
Sometimes you need to NOT use a regular expression and do things simpler. You
have a fairly simple example that not only does not need great power but may be
a pain to do using a very powerful technique, especially if you want to play
with look-ahead and look behind.
Assuming you have a line wi
The example given does not leave room for even a single copy of your matrix
so, yes, you need alternatives.
Your example was fairly trivial as all you wanted to do is subtract each
value from 100 and replace it. Obviously something like squaring a matrix
has no trivial way to do without multiple c
I may be missing something but using the plain old c() combine function
seems to work fine:
df <- data.frame(left = 1:5, right = 6:10)
df.combined <- data.frame(comb = c(df$left, df$right))
df
left right
11 6
22 7
33 8
44 9
5510
df.combined
comb
1
Try:
print(data.frame(COL1=1:5, COL2=10:6), row.names=FALSE)
-Original Message-
From: R-help On Behalf Of Dennis Fisher
Sent: Monday, March 27, 2023 1:05 PM
To: r-help@r-project.org
Subject: [R] printing a data.frame without row numbers
R 4.2.3
OS X
Colleagues,
I am printing a large
Your spelling of:
HH size
Is two word.
-Original Message-
From: R-help On Behalf Of Nandini raj
Sent: Monday, March 20, 2023 1:17 PM
To: r-help@r-project.org
Subject: [R] DOUBT
Respected sir/madam
can you please suggest what is an unexpected symbol in the below code for
running a multi
I see many are not thrilled with the concise but unintuitive way it is
suggested you use with the new R pipe function.
I am wondering if any has created one of a family of functions that might be
more intuitive if less general.
Some existing pipes simply allowed you to specify where in an argu
Steven,
The default is drop=TRUE.
If you want to retain a data.frame and not have it reduced to a vector under
some circumstances.
https://win-vector.com/2018/02/27/r-tip-use-drop-false-with-data-frames/
-Original Message-
From: R-help On Behalf Of Steven T. Yen
Sent: Sunday, Februar
Jorgen is correct that for many purposes, viewing a data.frame as a
collection of vectors of the same length allows you to code fairly complex
logic using whichever vectors you want and result in a vector answer, either
externally or as a new column. Text columns used to make some decisions in
the
Naresh,
This is a common case where the answer to a question is to ask the right
question.
Your question was how to make apply work. My question is how can you get the
functionality you want done in some version of R.
Apply is a tool and it is only one of many tools and may be the wrong one
In reading the post again, it sounds like the question is how to create a
logical condition that translates as 1:N is TRUE. Someone hinted along those
lines.
So one WAY I might suggest is you construct a logical vector as shown below. I
give an example of a bunch of 9 primes and you want only
A major question is why you ask how to use the subset function rather than
asking how to get your job done.
As you note, the simple way to get the first N items is to use indexing. If you
absolutely positively insist on using subset, place your data into something
like a data.frame and add a co
Kai,
Just FYI, this is mainly an R mailing list and although there ware ways to
combine python with R (or sort of alone) within environments like RSTUDIO, this
may not be an optimal place to discuss this. You are discussing what is no
longer really "R markdown" and more just plain "markdown" th
Just an idea if this is a one-time need to copy static data once used in
non-R to R. You are a bit vague about what you mean by "objects."
If you can find someone who uses S or S+ then maybe they can load the data
in and export it in some format usable for you and send you those files. If,
for exa
1 - 100 of 135 matches
Mail list logo