我的数据中有以下行名:
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))
作为“”的位置。可以改变(虽然它在本例中是有效的)。
发布于 2013-01-15 22:22:48
您可以映射[
以获取第一个元素:
sapply(strsplit(rownames(my_data),split= "\\."),'[',1)
...or (更好)使用正则表达式:
gsub('\\..*$','',rownames(my_data))
(译文:查找(点字符,某物,字符串末尾)的所有匹配项,替换为空字符串)
发布于 2013-01-16 02:47:34
因为我喜欢stringr
包,所以我想我应该把这个放在那里:
str_replace(rownames(my_data), "(^column_.+)\\.\\d+", "\\1")
(我不太擅长正则表达式,所以在括号外使用^
可能更好)
https://stackoverflow.com/questions/14347970
复制