Convert JSON keys to lower case and remove special characters in R2019 Community Moderator ElectionRename list of lists using a named listConvert JS object to JSON stringHow to parse JSON to object with lower case keyConvert in R output of package Elastic (nested list?) to data.frame or JSONConvert data.frame into json in RUsing jsonlite to write an unnamed list from R into a json arrayKeep duplicated names in json object from jsonlite conversion of listHow can I encode an R vector of length 1 as a single value in json using the jsonlite R package?Addition of special characters in text string in RXML convert to JSON RParse Nested Json in Python to Remove Special Characters in Columns
A three room house but a three headED dog
Who deserves to be first and second author? PhD student who collected data, research associate who wrote the paper or supervisor?
Placing subfig vertically
Why does the negative sign arise in this thermodynamic relation?
Why is Beresheet doing a only a one-way trip?
Best approach to update all entries in a list that is paginated?
How much stiffer are 23c tires over 28c?
Built-In Shelves/Bookcases - IKEA vs Built
How do I express some one as a black person?
Is Gradient Descent central to every optimizer?
If the Captain's screens are out, does he switch seats with the co-pilot?
Why the color red for the Republican Party
How to create a hard link to an inode (ext4)?
Unreachable code, but reachable with exception
Do items de-spawn in Diablo?
Virginia employer terminated employee and wants signing bonus returned
Making a sword in the stone, in a medieval world without magic
The bar has been raised
What wound would be of little consequence to a biped but terrible for a quadruped?
Space in array system equations
Is it true that real estate prices mainly go up?
In the late 1940’s to early 1950’s what technology was available that could melt a LOT of ice?
What to do when during a meeting client people start to fight (even physically) with each others?
Can someone explain what is being said here in color publishing in the American Mathematical Monthly?
Convert JSON keys to lower case and remove special characters in R
2019 Community Moderator ElectionRename list of lists using a named listConvert JS object to JSON stringHow to parse JSON to object with lower case keyConvert in R output of package Elastic (nested list?) to data.frame or JSONConvert data.frame into json in RUsing jsonlite to write an unnamed list from R into a json arrayKeep duplicated names in json object from jsonlite conversion of listHow can I encode an R vector of length 1 as a single value in json using the jsonlite R package?Addition of special characters in text string in RXML convert to JSON RParse Nested Json in Python to Remove Special Characters in Columns
I am working with jsonlite package in R and want to convert a complex list to JSON object. assume that x is my list:
library(jsonlite)
x= list(a=1,B=2,c=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
x=
$a
[1] 1
$B
[1] 2
$c
$c$D
[1] 4
$c$e
[1] 5
$c$`F g`
[1] "NAME"
$c$H
$c$H$i
$c$H$i$j
$c$H$i$j$K
[1] 1
toJSON(x)
"a":[1],"B":[2],"c":"D":[4],"e":[5],"F g":["NAME"],"H":"i":"j":"K":[1]
how can I remove any special case in the JSON keys (like space between F and g as well as lower casing all keys?
I know one option is to operate on the list before feeding into the toJSON() function but even in that case, I have no ideas of how to rename all elements of a list (in particular my list contains some data.frames as well). Is there any regular expression method to do it?
r json
add a comment |
I am working with jsonlite package in R and want to convert a complex list to JSON object. assume that x is my list:
library(jsonlite)
x= list(a=1,B=2,c=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
x=
$a
[1] 1
$B
[1] 2
$c
$c$D
[1] 4
$c$e
[1] 5
$c$`F g`
[1] "NAME"
$c$H
$c$H$i
$c$H$i$j
$c$H$i$j$K
[1] 1
toJSON(x)
"a":[1],"B":[2],"c":"D":[4],"e":[5],"F g":["NAME"],"H":"i":"j":"K":[1]
how can I remove any special case in the JSON keys (like space between F and g as well as lower casing all keys?
I know one option is to operate on the list before feeding into the toJSON() function but even in that case, I have no ideas of how to rename all elements of a list (in particular my list contains some data.frames as well). Is there any regular expression method to do it?
r json
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34
add a comment |
I am working with jsonlite package in R and want to convert a complex list to JSON object. assume that x is my list:
library(jsonlite)
x= list(a=1,B=2,c=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
x=
$a
[1] 1
$B
[1] 2
$c
$c$D
[1] 4
$c$e
[1] 5
$c$`F g`
[1] "NAME"
$c$H
$c$H$i
$c$H$i$j
$c$H$i$j$K
[1] 1
toJSON(x)
"a":[1],"B":[2],"c":"D":[4],"e":[5],"F g":["NAME"],"H":"i":"j":"K":[1]
how can I remove any special case in the JSON keys (like space between F and g as well as lower casing all keys?
I know one option is to operate on the list before feeding into the toJSON() function but even in that case, I have no ideas of how to rename all elements of a list (in particular my list contains some data.frames as well). Is there any regular expression method to do it?
r json
I am working with jsonlite package in R and want to convert a complex list to JSON object. assume that x is my list:
library(jsonlite)
x= list(a=1,B=2,c=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
x=
$a
[1] 1
$B
[1] 2
$c
$c$D
[1] 4
$c$e
[1] 5
$c$`F g`
[1] "NAME"
$c$H
$c$H$i
$c$H$i$j
$c$H$i$j$K
[1] 1
toJSON(x)
"a":[1],"B":[2],"c":"D":[4],"e":[5],"F g":["NAME"],"H":"i":"j":"K":[1]
how can I remove any special case in the JSON keys (like space between F and g as well as lower casing all keys?
I know one option is to operate on the list before feeding into the toJSON() function but even in that case, I have no ideas of how to rename all elements of a list (in particular my list contains some data.frames as well). Is there any regular expression method to do it?
r json
r json
asked Mar 6 at 16:09
MyQMyQ
1096
1096
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34
add a comment |
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34
add a comment |
1 Answer
1
active
oldest
votes
A recursive function to rename all the list of list elements should work. Here, it converts to lower case and also removes all non alpha-numeric characters (spaces, punctuation, etc)
x <- list(a=1,B=2,C=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
renames <- function(x)
cnames <- names(x)
if (is.null(cnames)) return (x)
x1 <- lapply(cnames,function(y) renames(x[[y]]))
if (class(x) %in% "data.frame") x1 <- as.data.frame(x1)
names(x1) <- gsub("[^[:alnum:]]","",tolower(cnames))
return(x1)
x1 <- renames(x)
> x1
$a
[1] 1
$b
[1] 2
$c
$c$d
[1] 4
$c$e
[1] 5
$c$fg
[1] "NAME"
$c$h
$c$h$i
$c$h$i$j
$c$h$i$j$k
[1] 1
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55027501%2fconvert-json-keys-to-lower-case-and-remove-special-characters-in-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
A recursive function to rename all the list of list elements should work. Here, it converts to lower case and also removes all non alpha-numeric characters (spaces, punctuation, etc)
x <- list(a=1,B=2,C=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
renames <- function(x)
cnames <- names(x)
if (is.null(cnames)) return (x)
x1 <- lapply(cnames,function(y) renames(x[[y]]))
if (class(x) %in% "data.frame") x1 <- as.data.frame(x1)
names(x1) <- gsub("[^[:alnum:]]","",tolower(cnames))
return(x1)
x1 <- renames(x)
> x1
$a
[1] 1
$b
[1] 2
$c
$c$d
[1] 4
$c$e
[1] 5
$c$fg
[1] "NAME"
$c$h
$c$h$i
$c$h$i$j
$c$h$i$j$k
[1] 1
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
add a comment |
A recursive function to rename all the list of list elements should work. Here, it converts to lower case and also removes all non alpha-numeric characters (spaces, punctuation, etc)
x <- list(a=1,B=2,C=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
renames <- function(x)
cnames <- names(x)
if (is.null(cnames)) return (x)
x1 <- lapply(cnames,function(y) renames(x[[y]]))
if (class(x) %in% "data.frame") x1 <- as.data.frame(x1)
names(x1) <- gsub("[^[:alnum:]]","",tolower(cnames))
return(x1)
x1 <- renames(x)
> x1
$a
[1] 1
$b
[1] 2
$c
$c$d
[1] 4
$c$e
[1] 5
$c$fg
[1] "NAME"
$c$h
$c$h$i
$c$h$i$j
$c$h$i$j$k
[1] 1
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
add a comment |
A recursive function to rename all the list of list elements should work. Here, it converts to lower case and also removes all non alpha-numeric characters (spaces, punctuation, etc)
x <- list(a=1,B=2,C=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
renames <- function(x)
cnames <- names(x)
if (is.null(cnames)) return (x)
x1 <- lapply(cnames,function(y) renames(x[[y]]))
if (class(x) %in% "data.frame") x1 <- as.data.frame(x1)
names(x1) <- gsub("[^[:alnum:]]","",tolower(cnames))
return(x1)
x1 <- renames(x)
> x1
$a
[1] 1
$b
[1] 2
$c
$c$d
[1] 4
$c$e
[1] 5
$c$fg
[1] "NAME"
$c$h
$c$h$i
$c$h$i$j
$c$h$i$j$k
[1] 1
A recursive function to rename all the list of list elements should work. Here, it converts to lower case and also removes all non alpha-numeric characters (spaces, punctuation, etc)
x <- list(a=1,B=2,C=list(D=4,e=5,'F g'='NAME',H=list(i=list(j=list(K=1)))))
renames <- function(x)
cnames <- names(x)
if (is.null(cnames)) return (x)
x1 <- lapply(cnames,function(y) renames(x[[y]]))
if (class(x) %in% "data.frame") x1 <- as.data.frame(x1)
names(x1) <- gsub("[^[:alnum:]]","",tolower(cnames))
return(x1)
x1 <- renames(x)
> x1
$a
[1] 1
$b
[1] 2
$c
$c$d
[1] 4
$c$e
[1] 5
$c$fg
[1] "NAME"
$c$h
$c$h$i
$c$h$i$j
$c$h$i$j$k
[1] 1
edited Mar 6 at 16:52
answered Mar 6 at 16:31
SorenSoren
1,029511
1,029511
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
add a comment |
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
Thanks@Soren but the function does not work properly. Just test this data: x <- list(a = 1, B = 2, C = list( D = 4, e = 5, 'F g' = 'NAME', H = list(i = list(j = list( K = 1, l = list(m = data.frame( a = 1:10, b = runif(10), "c d f g" = runif(10), check.rows = FALSE, check.names = FALSE )) ))) ))
– MyQ
Mar 6 at 16:42
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
@MyQ I ran your new list -- first glance seems it did what was needed, although it returned all objects as a list rather than element 'm' as a formatted data frame. Formatting aside, it's all there. See for example "as.data.frame(x1$c$h$i$j$l$m)" which returns the object class and formatting. Is this what you mean by not working properly? What is your expectation in converting back and forth to JSON in terms of retaining object class information?
– Soren
Mar 6 at 16:49
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Thanks Soren. yes the issue is the that your code would manipulate the entire names in the data.frames that could be quite tricky to fix that
– MyQ
Mar 6 at 16:50
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
Updated to cast as.data.frame when input object is a data frame, seems to resolve the issue?
– Soren
Mar 6 at 16:52
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55027501%2fconvert-json-keys-to-lower-case-and-remove-special-characters-in-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of Rename list of lists using a named list
– avid_useR
Mar 6 at 16:34