从R中的行名称中删除空格

时间:2016-02-23 01:59:25

标签: r gsub

当我读入.csv文件中的标题和行名称中有空格时(由于我用来制作模型的程序),write.csv将用“。”替换标题中的空格,但即使指定row.names=1,也不会出现行名称中的空格。 write.csv给我的一个例子如下所示。

         SPEC...1   SPEC...2
SAMP   1    0         3
SAMP   2    0         0
SAMP   3    0.05      0
SAMP   4    0.05      32.5

为了在twinspanR中使用TWINSPAN(仅在github上可用),我需要能够从行名中删除空格。

我确信有一种简单的方法可以做到这一点,但我还没有找到它。

gsub中使用此调用完全删除了我的列和标题:

gsub("[[:space:]]","",data)gsub("\\s+","",data)

那么,我在这里错过了什么?我绝望地尝试使用fix(alldata)进入我的整个模型列表并使用CTRL + H将所有“SAMP”替换为“SAMP”,但这会导致整个R程序崩溃。

1 个答案:

答案 0 :(得分:0)

gsub是要走的路。如果您使用lapply,则只需要注意返回值。例如:

df1 <- data.frame(a = 1:3)
rownames(df1) <- c("A  A", "B  B", "C  C")
df2 <- data.frame(b = 4:6)
rownames(df2) <- c("D  D", "E  E", "F  F")

dfl <- list(df1, df2)

这不起作用:

lapply(dfl, function(df) rownames(df) <- gsub(" ", "", rownames(df)))

因为返回了gsub的输出,并且df在函数环境中被替换,一旦该环境被删除就会消失。为了解决这个问题,我们返回df

lapply(dfl, function(df){rownames(df) <- gsub(" ", "", rownames(df)); df})
# [[1]]
#    a
# AA 1
# BB 2
# CC 3
# 
# [[2]]
#    b
# DD 4
# EE 5
# FF 6