【发布时间】:2013-07-18 23:50:20
【问题描述】:
我有一个 data.frame,其中包含一个包含句点的字符串列,例如“a.b.c.X”。我想按句点拆分字符串并保留第三段,例如给出的示例中的“c”。这就是我正在做的事情。
> df = data.frame(v=c("a.b.a.X", "a.b.b.X", "a.b.c.X"), b=seq(1,3))
> df
v b
1 a.b.a.X 1
2 a.b.b.X 2
3 a.b.c.X 3
而我想要的是
> df = data.frame(v=c("a.b.a.X", "a.b.b.X", "a.b.c.X"), b=seq(1,3))
> df
v b
1 a 1
2 b 2
3 c 3
我正在尝试使用within,但我得到了奇怪的结果。第一列第一行的值正在重复。
> get = function(x) { unlist(strsplit(x, "\\."))[3] }
> within(df, v <- get(as.character(v)))
v b
1 a 1
2 a 2
3 a 3
这样做的最佳做法是什么?我做错了什么?
更新: 这是我从@agstudy 的回答中使用的解决方案:
> df = data.frame(v=c("a.b.a.X", "a.b.b.X", "a.b.c.X"), b=seq(1,3))
> get = function(x) gsub(".*?[.].*?[.](.*?)[.].*", '\\1', x)
> within(df, v <- get(v))
v b
1 a 1
2 b 2
3 c 3
【问题讨论】: