当我读入.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程序崩溃。
答案 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