Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中dplyr包中变异函数的怪异行为_R_Dplyr_Stringi_Mutated - Fatal编程技术网

R中dplyr包中变异函数的怪异行为

R中dplyr包中变异函数的怪异行为,r,dplyr,stringi,mutated,R,Dplyr,Stringi,Mutated,我正在制作一套具有尺寸的产品 dim(data) [1] 419612 2 其中第二列大致如下所示: > unique(data[1:50,"topics"]) [1] {"dom":2.0,"moda":3.0,"rodzina":1.55,"praca":1.42,"finanse":1.96,"edukacja":1.67,"sport":1.96,"muzyka":1.52,"kuchnia":1.8,"plotka":1.8,"zdrowie":1.12,"kibic

我正在制作一套具有尺寸的产品

dim(data)
[1] 419612      2
其中第二列大致如下所示:

> unique(data[1:50,"topics"])
[1] {"dom":2.0,"moda":3.0,"rodzina":1.55,"praca":1.42,"finanse":1.96,"edukacja":1.67,"sport":1.96,"muzyka":1.52,"kuchnia":1.8,"plotka":1.8,"zdrowie":1.12,"kibic":1.8,"uroda":2.32,"gra":2.94,"motoryzacja":1.33,"kultura":1.42,"film":3.14,"podróż":1.9,"technologia":1.31}
[2] {"rodzina":2.99,"kultura":4.46,"muzyka":4.5}                                                                                                                                                                                                                            
[3] {"dom":1.93,"rodzina":5.37,"zwierzęta":3.0,"praca":4.3,"finanse":2.11,"sport":2.1,"muzyka":2.99,"nieruchomość":2.8,"kuchnia":6.4,"plotka":2.1,"zdrowie":3.79,"gra":4.25,"motoryzacja":2.57,"kultura":3.13,"film":4.4,"podróż":3.21}                                     
[4] {"plotka":9.5,"uroda":10.06,"kultura":15.67,"muzyka":29.97}                                                                                                                                                                                                             
[5] {"dom":2.99,"rodzina":2.5,"edukacja":3.85,"sport":1.17,"muzyka":1.23,"nieruchomość":2.95,"kuchnia":1.42,"wnętrze":1.33,"kibic":1.17,"ogród":1.33,"motoryzacja":1.17,"film":1.17,"podróż":1.57}                                                                          
[6] {"kuchnia":4.38,"plotka":1.33,"rodzina":1.61,"film":1.33}                                                                                                                                                                                                               
37530 Levels: {"biznes":1.0} ... {"zwierzęta":9.96,"podróż":9.97}
对于每一行,我想从
主题
列中选择在
符号之后得分最高的单词。我试图使用
dplyr
包中的mutate函数,但它似乎不起作用。使用
stringi
软件包生成的字符上的操作,这些软件包是
stringr
的更快版本。下面是我的代码和此操作的结果。有人知道为什么我在每次操作后都会得到相同的值,以及如何在不使用
for
循环的情况下获得所需的结果吗

> data2 <- data %>%
+   mutate( xx = topics %>%
+             stri_extract_all_regex(pattern = "[a-zA-Z0-9óśćłźżęą\\.\\s]+") %>% 
+             unlist %>% 
+             data.frame( topic = .[seq(1,length(.), by=2)], 
+                         waga = .[seq(2,length(.), by=2)] )  %>% 
+             select( topic, waga) %>% arrange( desc( waga)) %>%
+             unique() %>%
+             .[1,1]
+             )
> table(data2$xx)[ which(table(data2$xx) > 1) ]
kuchnia 
 419612 
样本数据

图书馆(档案管理员)
数据您的
mutate()
函数未“矢量化”。Mutate不会一次对一行进行操作,它会将整个列作为向量进行操作。您的
unlist
[1,1]
提取将获取所有行的值,并向下折叠为一个向量和一个值

您可以使用

extr <- Vectorize(. %>%
         stri_extract_all_regex(pattern = "[a-zA-Z0-9óśćłźżęą\\.\\s]+") %>% 
         unlist %>% 
         data.frame( topic = .[seq(1,length(.), by=2)], 
                     waga = .[seq(2,length(.), by=2)] )  %>% 
         select( topic, waga) %>% arrange( desc( waga)) %>%
         unique() %>%
         .[1,1])

尽管我同意其他人的看法,因为您有JSON数据,所以最好使用JSON解析器正确解析这些数据,而不是尝试用正则表达式重新发明轮子。

为什么您要使用正则表达式而不是将其作为JSON来读。。?您还检查了问题是否不是数据保存为因子而不是字符(为什么在这里是因子?)?顺便问一下,您能提供示例数据吗?@Tim我已经在最后用示例数据更新了我的评论。@Tim现在我看到将
fromJSON
函数from
rjson
包应用到每一行可能更可读,但正如您所看到的,简单的正则表达式也可以工作:)但是
mutate
函数不行..是的,但我仍然会坚持使用其中一个JSON库,因为(a)它们是为这样的数据结构设计的,因此可能不太容易出错,(b)可能比使用正则表达式更快。如果性能是你的项目中的一个问题,我会检查它。
library(archivist)
data <- loadFromGithubRepo( "97f74c5a10f510cce39eafb0d9a1a9e8", 
user="MarcinKosinski", repo="Museum", value = TRUE )
extr <- Vectorize(. %>%
         stri_extract_all_regex(pattern = "[a-zA-Z0-9óśćłźżęą\\.\\s]+") %>% 
         unlist %>% 
         data.frame( topic = .[seq(1,length(.), by=2)], 
                     waga = .[seq(2,length(.), by=2)] )  %>% 
         select( topic, waga) %>% arrange( desc( waga)) %>%
         unique() %>%
         .[1,1])
data %>% mutate( xx = extr(topics))