从 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
当我读入在 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