如何删除R中包含特定文本的行名?

s4n0splo  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(105)

我想只删除包含“Apple_”的行的行名

df <- data.frame('fruit'=c("Apple_1", "Apple_2", "Apple_3", "Pear_1", "Pear_2", "Pear_3"),
                'color'=c("Red", "Red", "Green","Green","Green","Green"))
df<- column_to_rownames(df, var="fruit")

这些都不起作用,因为我相信没有任何行只被称为“Apple”

row.names.remove <- c("Apple")
df[!(row.names(df) %in% row.names.remove), ]
df2<- length(which(grepl("Apple", rownames(df))))

df3<- df[row.names(df) != "Apple", , drop = FALSE]
qgzx9mmu

qgzx9mmu1#

我们可以将grep-一起使用

df[-grep('Apple', row.names(df)),, drop = FALSE]

invert = TRUE

df[grep('Apple', row.names(df), invert = TRUE),, drop = FALSE]

对于data.frame,rownames和column names属性不能为空。

i1 <- grep('Apple', row.names(df))
row.names(df)[i1] <- seq_along(i1)

或者转换为matrix,然后将这些行名称更改为空白(""

m1 <- as.matrix(df)
row.names(m1)[i1] <- ""

因为matrix允许行名重复,而data.frame不允许。也可以完全删除rowname属性,但必须跨整个对象

相关问题