我有一个包含句点的字符串列的data.frame,例如“abcX”。我想按句点拆分字符串并保留第三段,例如给出的示例中的“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