当列包含JSON列表时,使用R计算比率?

当列包含JSON列表时,使用R计算比率?,r,json,dataframe,dplyr,R,Json,Dataframe,Dplyr,我有一个包含两列的数据框,其中包含类似JSON的内容: 我有两列,每列中的每一行都是JSON。 df$col1[1] <- "[14,7,5,3,4,0,1,7,2,3,1,18,13,4,23,7,8,8,11,18,15,6,2,10,2,4,8,5,11,5,1,5,2,4,3,1,6,8,5,5,3,1,1,4,5,2,9,3,4,11,11,14,3,12,2,6,0,0,15,1,18,5,3,6,6,6]" 我做过这样的事情: lapply(df$col1, functio

我有一个包含两列的数据框,其中包含类似JSON的内容:
我有两列,每列中的每一行都是JSON。

df$col1[1] <- "[14,7,5,3,4,0,1,7,2,3,1,18,13,4,23,7,8,8,11,18,15,6,2,10,2,4,8,5,11,5,1,5,2,4,3,1,6,8,5,5,3,1,1,4,5,2,9,3,4,11,11,14,3,12,2,6,0,0,15,1,18,5,3,6,6,6]"
我做过这样的事情:

lapply(df$col1, function(i) {fromJSON(i)/scalar1}) / 
lapply(df$col2, function(i) {fromJSON(i)/scalar2}

还有其他方法吗?

我们可以在
JSON
格式中应用
fromJSON
的列中循环,然后使用
Map
使用
scalar
将其分解为单个
vector

Reduce(`/`, Map(`/`, lapply(df[c('col1', 'col2')], fromJSON), df[c('scalar1', 'scalar2')]))

使用
purr
中的
map
的类似方法如下

library(purrr)
map2(df[c('col1', 'col2')], df[c('scalar1', 'scalar2')], ~ fromJSON(.x)/.y) %>% 
                     reduce(`/`)

有趣的是,你说“循环”,虽然我理解R经常在内部写一个文字<代码> < /Cult>循环,但是我从概念的角度考虑这些不是循环。这是我预想的完美优雅的处理结构(IMO)。有一个错误:
error:parse error:trailing garbage 2,2,6,0,0,15,1,18,5,3,6,6,6][21,13,14,4,10,3,10,2,5,3,5,18,(就在这里)----^
@akrunI有两列,每列中的每一行都是JSON。@r2evans也许你能帮助我吗?我的每一列都包含JSON-每一行。请看,我这里有一列JSON!不是JSON列!@akrunsteves,你的问题很接近,但不是。你能添加
dput(head(df[c(“col1”、“col2”、“scalar1”、“scalar2”)))
(或任何需要的列)?
Reduce(`/`, Map(`/`, lapply(df[c('col1', 'col2')], fromJSON), df[c('scalar1', 'scalar2')]))
library(purrr)
map2(df[c('col1', 'col2')], df[c('scalar1', 'scalar2')], ~ fromJSON(.x)/.y) %>% 
                     reduce(`/`)