我想要获取这种形式的数据
before = data.frame(attr = c(1,30,4,6), type=c('foo_and_bar','foo_and_bar_2'))
attr type
1 1 foo_and_bar
2 30 foo_and_bar_2
3 4 foo_and_bar
4 6 foo_and_bar_2
然后在上述的"type
"列上使用split()
方法,以得到类似以下的内容:
attr type_1 type_2
1 1 foo bar
2 30 foo bar_2
3 4 foo bar
4 6 foo bar_2
我曾经想到了一些涉及apply
的非常复杂的东西,但是现在我已经找不到了。它似乎太复杂了,不应该是最好的方法。我可以像下面这样使用strsplit
,但是不清楚如何将其返回到数据框中的2列中。
> strsplit(as.character(before$type),'_and_')
[[1]]
[1] "foo" "bar"
[[2]]
[1] "foo" "bar_2"
[[3]]
[1] "foo" "bar"
[[4]]
[1] "foo" "bar_2"
感谢任何指点。我还没有完全掌握 R 列表。
left_right <- str_split_fixed(as.character(split_df),'\">',2)
- LearneRstr_split_fixed("aaa...bbb", fixed("..."), 2)
在pattern=
参数中使用fixed()
来“匹配一个固定的字符串”可行。在正则表达式中,“.”代表任何字符。 - thelatemail|
来搜索几个字符串。例如,对于_and_
和_or_
,代码应该是:str_split_fixed(before$type, c("_and_|_or_"), 2)
- Martinfixed("|")
,接受的答案对我来说才起作用。 - undefined