Re: [R] Col names in a data frame

2021-01-21 Thread Bernard Comcast
Thanks - I had seen that parameter but did not think the ( would be illegal 
but now I understand why it considers it illegal.

Thanks again

Bernard
Sent from my iPhone so please excuse the spelling!"

> On Jan 21, 2021, at 4:14 PM, Duncan Murdoch  wrote:
> 
> On 21/01/2021 3:58 p.m., Bernard McGarvey wrote:
>> Here is an example piece of code to illustrate an issue:
>> rm(list=ls()) # Clear Workspace
>> #
>> Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
>> Colnames1 <- c("(A)","(B)","(C)")
>> colnames(Data1) <- Colnames1
>> print(Data1)
>> DataFrame1 <- data.frame(Data1)
>> print(DataFrame1)
>> colnames(DataFrame1) <- Colnames1
>> print(DataFrame1)
>> The results I get are:
>>(A)(B)(C)
>> [1,]  0.4739417  1.3138868  0.4262165
>> [2,] -2.1288083  1.0333770  1.1543404
>> [3,] -0.3401786 -0.7023236 -0.2336880
>>X.A.   X.B.   X.C.
>> 1  0.4739417  1.3138868  0.4262165
>> 2 -2.1288083  1.0333770  1.1543404
>> 3 -0.3401786 -0.7023236 -0.2336880
>> (A)(B)(C)
>> 1  0.4739417  1.3138868  0.4262165
>> 2 -2.1288083  1.0333770  1.1543404
>> 3 -0.3401786 -0.7023236 -0.2336880
>> so that when I make the matrix with headings the parentheses are replaced by 
>> periods but I can add them after creating the data frame and the column 
>> headings are correct.
>> Any ideas on why this occurs?
> 
> By default, data.frame() uses names that are legal variable names, so you can 
> do things like Data1$X.A. You can stop this change by saying
> 
> DataFrame1 <- data.frame(Data1, check.names=FALSE)
> 
> Duncan Murdoch

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


Re: [R] Col names in a data frame

2021-01-21 Thread Bernard Comcast
Thanks - I had seen that parameter but did not think the ( would be illegal but 
now I understand why it considers it illegal.

Thanks again

Bernard
Sent from my iPhone so please excuse the spelling!"

> On Jan 21, 2021, at 4:14 PM, Duncan Murdoch  wrote:
> 
> On 21/01/2021 3:58 p.m., Bernard McGarvey wrote:
>> Here is an example piece of code to illustrate an issue:
>> rm(list=ls()) # Clear Workspace
>> #
>> Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
>> Colnames1 <- c("(A)","(B)","(C)")
>> colnames(Data1) <- Colnames1
>> print(Data1)
>> DataFrame1 <- data.frame(Data1)
>> print(DataFrame1)
>> colnames(DataFrame1) <- Colnames1
>> print(DataFrame1)
>> The results I get are:
>> (A)(B)(C)
>> [1,]  0.4739417  1.3138868  0.4262165
>> [2,] -2.1288083  1.0333770  1.1543404
>> [3,] -0.3401786 -0.7023236 -0.2336880
>> X.A.   X.B.   X.C.
>> 1  0.4739417  1.3138868  0.4262165
>> 2 -2.1288083  1.0333770  1.1543404
>> 3 -0.3401786 -0.7023236 -0.2336880
>>  (A)(B)(C)
>> 1  0.4739417  1.3138868  0.4262165
>> 2 -2.1288083  1.0333770  1.1543404
>> 3 -0.3401786 -0.7023236 -0.2336880
>> so that when I make the matrix with headings the parentheses are replaced by 
>> periods but I can add them after creating the data frame and the column 
>> headings are correct.
>> Any ideas on why this occurs?
> 
> By default, data.frame() uses names that are legal variable names, so you can 
> do things like Data1$X.A. You can stop this change by saying
> 
> DataFrame1 <- data.frame(Data1, check.names=FALSE)
> 
> Duncan Murdoch

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


Re: [R] Col names in a data frame

2021-01-21 Thread Jan T. Kim via R-help
it looks to me that the names are cranked through make.names for
data frames case while that doesn't happen for matrices. Peeking
into the `colnames<-` code supports this idea, but that in turn
uses `names<-` which is a primitive and so defies further easy
peeking.

The data.frame function provides the check.names parameter to
switch this on / off, but for other classes this checking doesn't
seem to be provided.

Perhaps the idea behind this discrepancy is to enable the use of
the $ operator to access columns of the data frame, while that's
not possible for matrices anyway. (Personally, I don't find the
results of make.names that useful, though, and I tend to sanitise
them myself when working with data frames with unwieldy column
names).

Best regards, Jan


On Thu, Jan 21, 2021 at 03:58:44PM -0500, Bernard McGarvey wrote:
> Here is an example piece of code to illustrate an issue:
> 
> rm(list=ls()) # Clear Workspace
> #
> Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
> Colnames1 <- c("(A)","(B)","(C)")
> colnames(Data1) <- Colnames1
> print(Data1)
> DataFrame1 <- data.frame(Data1)
> print(DataFrame1)
> colnames(DataFrame1) <- Colnames1
> print(DataFrame1)
> 
> The results I get are:
> 
> (A)(B)(C)
> [1,]  0.4739417  1.3138868  0.4262165
> [2,] -2.1288083  1.0333770  1.1543404
> [3,] -0.3401786 -0.7023236 -0.2336880
> X.A.   X.B.   X.C.
> 1  0.4739417  1.3138868  0.4262165
> 2 -2.1288083  1.0333770  1.1543404
> 3 -0.3401786 -0.7023236 -0.2336880
>  (A)(B)(C)
> 1  0.4739417  1.3138868  0.4262165
> 2 -2.1288083  1.0333770  1.1543404
> 3 -0.3401786 -0.7023236 -0.2336880
> 
> so that when I make the matrix with headings the parentheses are replaced by 
> periods but I can add them after creating the data frame and the column 
> headings are correct. 
> 
> Any ideas on why this occurs?
> 
> Thanks
> 
> 
> Bernard McGarvey
> Director, Fort Myers Beach Lions Foundation, Inc.
> Retired (Lilly Engineering Fellow).
> 
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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 -- To UNSUBSCRIBE and more, see
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.


Re: [R] Col names in a data frame

2021-01-21 Thread Sarah Goslee
Hi,

data.frame() checks names by default to ensure that column names are
legal, but there's an argument to change that.

>From ?data.frame()


check.names: logical.  If ‘TRUE’ then the names of the variables in the
  data frame are checked to ensure that they are syntactically
  valid variable names and are not duplicated.  If necessary
  they are adjusted (by ‘make.names’) so that they are.

Sarah

On Thu, Jan 21, 2021 at 3:59 PM Bernard McGarvey
 wrote:
>
> Here is an example piece of code to illustrate an issue:
>
> rm(list=ls()) # Clear Workspace
> #
> Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
> Colnames1 <- c("(A)","(B)","(C)")
> colnames(Data1) <- Colnames1
> print(Data1)
> DataFrame1 <- data.frame(Data1)
> print(DataFrame1)
> colnames(DataFrame1) <- Colnames1
> print(DataFrame1)
>
> The results I get are:
>
> (A)(B)(C)
> [1,]  0.4739417  1.3138868  0.4262165
> [2,] -2.1288083  1.0333770  1.1543404
> [3,] -0.3401786 -0.7023236 -0.2336880
> X.A.   X.B.   X.C.
> 1  0.4739417  1.3138868  0.4262165
> 2 -2.1288083  1.0333770  1.1543404
> 3 -0.3401786 -0.7023236 -0.2336880
>  (A)(B)(C)
> 1  0.4739417  1.3138868  0.4262165
> 2 -2.1288083  1.0333770  1.1543404
> 3 -0.3401786 -0.7023236 -0.2336880
>
> so that when I make the matrix with headings the parentheses are replaced by 
> periods but I can add them after creating the data frame and the column 
> headings are correct.
>
> Any ideas on why this occurs?
>
> Thanks
>
>
> Bernard McGarvey
> Director, Fort Myers Beach Lions Foundation, Inc.
> Retired (Lilly Engineering Fellow).
>

-- 
Sarah Goslee (she/her)
http://www.numberwright.com

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


Re: [R] Col names in a data frame

2021-01-21 Thread Duncan Murdoch

On 21/01/2021 3:58 p.m., Bernard McGarvey wrote:

Here is an example piece of code to illustrate an issue:

rm(list=ls()) # Clear Workspace
#
Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
Colnames1 <- c("(A)","(B)","(C)")
colnames(Data1) <- Colnames1
print(Data1)
DataFrame1 <- data.frame(Data1)
print(DataFrame1)
colnames(DataFrame1) <- Colnames1
print(DataFrame1)

The results I get are:

 (A)(B)(C)
[1,]  0.4739417  1.3138868  0.4262165
[2,] -2.1288083  1.0333770  1.1543404
[3,] -0.3401786 -0.7023236 -0.2336880
 X.A.   X.B.   X.C.
1  0.4739417  1.3138868  0.4262165
2 -2.1288083  1.0333770  1.1543404
3 -0.3401786 -0.7023236 -0.2336880
  (A)(B)(C)
1  0.4739417  1.3138868  0.4262165
2 -2.1288083  1.0333770  1.1543404
3 -0.3401786 -0.7023236 -0.2336880

so that when I make the matrix with headings the parentheses are replaced by 
periods but I can add them after creating the data frame and the column 
headings are correct.

Any ideas on why this occurs?


By default, data.frame() uses names that are legal variable names, so 
you can do things like Data1$X.A. You can stop this change by saying


DataFrame1 <- data.frame(Data1, check.names=FALSE)

Duncan Murdoch

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


Re: [R] Col names in a data frame

2021-01-21 Thread Jeff Newmiller
rm(list=ls()) is a bad practice... especially when posting examples. It doesn't 
clean out everything and it removes objects created by the user.

Read ?data.frame, particularly regarding the check.names parameter. The intent 
is to make it easier to use DF$A notation, though DF$`(A)` is usable if you are 
somewhat experienced with R.

On January 21, 2021 12:58:44 PM PST, Bernard McGarvey 
 wrote:
>Here is an example piece of code to illustrate an issue:
>
>rm(list=ls()) # Clear Workspace
>#
>Data1 <- matrix(data=rnorm(9,0,1),nrow=3,ncol=3)
>Colnames1 <- c("(A)","(B)","(C)")
>colnames(Data1) <- Colnames1
>print(Data1)
>DataFrame1 <- data.frame(Data1)
>print(DataFrame1)
>colnames(DataFrame1) <- Colnames1
>print(DataFrame1)
>
>The results I get are:
>
>(A)(B)(C)
>[1,]  0.4739417  1.3138868  0.4262165
>[2,] -2.1288083  1.0333770  1.1543404
>[3,] -0.3401786 -0.7023236 -0.2336880
>X.A.   X.B.   X.C.
>1  0.4739417  1.3138868  0.4262165
>2 -2.1288083  1.0333770  1.1543404
>3 -0.3401786 -0.7023236 -0.2336880
> (A)(B)(C)
>1  0.4739417  1.3138868  0.4262165
>2 -2.1288083  1.0333770  1.1543404
>3 -0.3401786 -0.7023236 -0.2336880
>
>so that when I make the matrix with headings the parentheses are
>replaced by periods but I can add them after creating the data frame
>and the column headings are correct. 
>
>Any ideas on why this occurs?
>
>Thanks
>
>
>Bernard McGarvey
>Director, Fort Myers Beach Lions Foundation, Inc.
>Retired (Lilly Engineering Fellow).
>
>__
>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>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.

-- 
Sent from my phone. Please excuse my brevity.

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.