我有一个包含许多列的数据框。对于其中一列('cols'),它大致具有以下结构:
'x\y\z'
一些行是“x\y\z”,其他行是“x\y”。我只对行的“y”部分感兴趣。
我一直在浏览有类似问题的人在 stackoverflow 上的各种帖子,但我一直找不到有效的解决方案。我得到的最接近的是这个(导致错误):x = strsplit(df['cols'], "\")
我有一种感觉,我可能没有正确使用软件包。任何帮助都会很棒!
编辑:包括样本结构和预期输出
当前结构:
cols
'test\foo\bar'
'test\foo'
'test\bar'
'test\foo\foo'
预期输出:
cols
'foo'
'foo'
'bar'
'foo'
最佳答案
我们需要逃离
df$cols <- sapply(strsplit(df$cols, "\\\\"), `[`, 2)
df$cols
#[1] "foo" "foo" "bar" "foo"
或者使用
sub
sub("^\\w+.(\\w+).*", "\\1", df$cols)
#[1] "foo" "foo" "bar" "foo"
数据
df <- structure(list(cols = c("test\\foo\\bar", "test\\foo", "test\\bar",
"test\\foo\\foo")), .Names = "cols", class = "data.frame", row.names = c(NA,
-4L))
关于r - 根据选择字符拆分列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50911658/