我有一个包含此类键值对的字符串 s,我想从中构造数据框,
s="{'#JJ': 121, '#NN': 938, '#DT': 184, '#VB': 338, '#RB': 52}"
r1<-sapply(strsplit(s, "[^0-9_]+",as.numeric),as.numeric)
r2<-sapply(strsplit(s, "[^A-Z]+",as.numeric),as.character)
d<-data.frame(id=r2,value=r1)
是什么赋予了:
r1
[,1]
[1,] NA
[2,] 121
[3,] 938
[4,] 184
[5,] 338
[6,] 52
r2
[,1]
[1,] ""
[2,] "JJ"
[3,] "NN"
[4,] "DT"
[5,] "VB"
[6,] "RB"
d
id value
1 NA
2 JJ 121
3 NN 938
4 DT 184
5 VB 338
6 RB 52
首先,我希望在使用正则表达式后没有 NA 和 ""。我认为它应该类似于 {2,} 表示从第二次出现匹配所有内容,但我不能在 R 中做到这一点。
我想做的另一个想法是:拥有一个带有如下列的数据框:
m
1 {'#JJ': 121, '#NN': 938, '#DT': 184, '#VB': 338, '#RB': 52}
2 {'#NN': 168, '#DT': 59, '#VB': 71, '#RB': 5, '#JJ': 35}
3 {'#JJ': 18, '#NN': 100, '#DT': 23, '#VB': 52, '#RB': 11}
4 {'#NN': 156, '#JJ': 39, '#DT': 46, '#VB': 67, '#RB': 21}
5 {'#NN': 112, '#DT': 39, '#VB': 57, '#RB': 8, '#JJ': 32}
6 {'#DT': 236, '#NN': 897, '#VB': 420, '#RB': 122, '#JJ': 240}
7 {'#NN': 316, '#RB': 25, '#DT': 66, '#VB': 112, '#JJ': 81}
8 {'#NN': 198, '#DT': 29, '#VB': 85, '#RB': 37, '#JJ': 44}
9 {'#RB': 30}
10 {'#NN': 373, '#DT': 48, '#VB': 71, '#RB': 21, '#JJ': 36}
11 {'#NN': 49, '#DT': 17, '#VB': 23, '#RB': 11, '#JJ': 8}
12 {'#NN': 807, '#JJ': 135, '#DT': 177, '#VB': 315, '#RB': 69}
我想遍历每一行并将其数值拆分为由键命名的列。
显示几行的示例,我希望它看起来像: