在R中拆分字符串并从列表中提取信息

时间:2013-01-15 22:05:57

标签: r

我的数据中有以下行名称:

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

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

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))作为"的位置。"可以改变(虽然它适用于这个例子)。

2 个答案:

答案 0 :(得分:8)

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

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

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

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

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

答案 1 :(得分:0)

由于我喜欢stringr包,我以为我会把它扔出去:

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

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