从 R 中的行名称中删除 space

Remove space from row names in R

当我读入在 header 和行名称中包含 space 的 .csv 文件时(由于我用来制作模型的程序),write.csv会将 header 中的 space 替换为“.”,但不会替换行名称中的 space,即使在指定 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 中使用仅在 github 上可用的 TWINSPAN,我需要能够从行名称中删除 space。

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

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

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

那么,我在这里缺少什么?绝望中,我曾尝试简单地使用 fix(alldata) 进入我的整个模型列表并使用 CTRL+H 将所有 "SAMP " 替换为 "SAMP.",但这会使整个 R 程序崩溃。

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

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 的输出是 returned,而 df 在函数环境中被替换时,一旦离开该环境就会消失。为了解决这个问题,我们 return 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