我的数据中有以下行名称:
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))
作为"的位置。"可以改变(虽然它适用于这个例子)。
答案 0 :(得分:8)
您可以映射[
以获取第一个元素:
sapply(strsplit(rownames(my_data),split= "\\."),'[',1)
...或(更好)使用正则表达式:
gsub('\\..*$','',rownames(my_data))
(翻译:查找(点字符,某事,字符串结尾)的所有匹配项并替换为空字符串)
答案 1 :(得分:0)
由于我喜欢stringr
包,我以为我会把它扔出去:
str_replace(rownames(my_data), "(^column_.+)\\.\\d+", "\\1")
(我对正则表达式不是很好,所以^
可能在括号外更好)