3

我的数据中有以下行名:

column_01.1
column_01.2
column_01.3
column_02.1
column_02.2

我可以使用以下命令拆分这些行名:

strsplit(rownames(my_data),split= "\\.")

并获取列表:

[[1]]
[1] "column_01" "1"   

[[2]]
[1] "column_01" "2"   

[[3]]
[1] "column_01" "3"

...

但是因为我想要第一部分中的字符并完全丢弃第二部分,如下所示:

column_01
column_01
column_01
column_02
column_02

我已经用尽了仅提取这部分信息的技巧。我用 unlist() 和 as.data.frame() 尝试了一些选项,但没有运气。或者有没有更简单的方法来分割字符串?我不想使用as.character(substring(rownames(my_data),1,9))“。”作为位置。可以改变(虽然它适用于这个例子)。

4

2 回答 2

8

您可以映射[以获取第一个元素:

sapply(strsplit(rownames(my_data),split= "\\."),'[',1)

...或(更好)使用正则表达式:

gsub('\\..*$','',rownames(my_data))

(翻译:查找(点字符,某物,字符串结尾)的所有匹配项并替换为空字符串)

于 2013-01-15T22:22:47.677 回答
0

因为我喜欢这个stringr包裹,我想我会把它扔在那里:

str_replace(rownames(my_data), "(^column_.+)\\.\\d+", "\\1")

(我对正则表达式不是很好,所以^括号外可能会更好)

于 2013-01-16T02:47:34.063 回答