如果read_csv
返回的矩阵中没有标题,如何更改第一列的条目?
我的变量当前如下所示:
PostFC C1Mean
WBGene00001816 2.475268e-01 415.694457
WBGene00001817 4.808575e+00 2451.018711
,我想将WBGene0000XXXX
重命名为XXXX
。
答案 0 :(得分:2)
如果第一列实际上是行名,请执行以下操作
rownames(data) <- gsub(pattern = "WBGene0000", replacement = "", x = rownames(data))
如果不一致,则可能需要考虑使用Stringr软件包并使用substr
函数
但是,如果它实际上是一个没有标题列的向量,那么在不知道数据结构的情况下,我不知道如何引用它。
运行数据集的str
函数,然后查看返回的结果。或做以下测试
colnames(data)[1] <- "test"
在我们知道您如何使用“零长度”变量名称之前,无法完全提供帮助
答案 1 :(得分:2)
如果我正确地理解了您的问题,那么您描述的第一个“未命名”列就是行名,实际上不在您的data.frame中。
# Example data
df = data.frame(PostFC = c(2.475268e-01, 4.808575e+00), C1Mean = c(415.694457, 2451.018711) )
rownames(df) = c("WBGene00001816", "WBGene00001817")
df
# PostFC C1Mean
# WBGene00001816 0.2475268 415.6945
# WBGene00001817 4.8085750 2451.0187
# change rownames
rownames(df) = c("rowname1", "rowname2")
df
# PostFC C1Mean
# rowname1 0.2475268 415.6945
# rowname2 4.8085750 2451.0187
答案 2 :(得分:1)
寻址的条目实际上是行名。我们可以使用rownames(.)
访问它们。
rownames(df1)
# [1] "WBGene00001816" "WBGene00001817" "WBGene00001818" "WBGene00001819"
# [5] "WBGene00001820" "WBGene00001821" "WBGene00001822"
在R中也实现了rownames<-
,即我们可以通过执行rownames(.) <- c(.)
来分配新的行名。
现在,就您而言,如果您只想保留最后四位数字。我们可以在这里使用substring
,告诉我们应该从哪个数字中提取出来。在我们的情况下,它是最后一个11
位的数字,所以我们这样做:
rownames(df1) <- substring(rownames(df1), 11)
df1
# PostFC C1Mean
# 1816 0.36250598 2.1073145
# 1817 0.51068402 0.4186838
# 1818 -0.96837330 -0.7239156
# 1819 0.02331745 -0.5902216
# 1820 -0.56927945 1.7540356
# 1821 -0.51252943 0.1343385
# 1822 0.47263180 1.4366233
请注意,不允许重复的行名,即,如果使用此方法获得重复的行名,则会产生错误。
使用的数据
df1 <- structure(list(PostFC = c(0.362505982864934, 0.510684020059692,
-0.968373302351162, 0.0233174467410604, -0.56927945273647, -0.512529427359891,
0.472631804850333), C1Mean = c(2.10731450148575, 0.418683823183885,
-0.723915648073638, -0.590221641040516, 1.75403562218217, 0.134338480077884,
1.43662329542089)), class = "data.frame", row.names = c("1816",
"1817", "1818", "1819", "1820", "1821", "1822"))