【发布时间】:2014-06-19 09:23:09
【问题描述】:
我想更改数据框中的一些名称df
> names(df)[17:26]
[1] "X1." "X2." "X3." "X4." "X5." "X6." "X7." "X8." "X9." "X10."
我想要“X”->“Reach”并删除点。 我用过 lapply:
change <- function(d){
gsub("X","reach",d)
gsub("\\.","",d)
}
a <- as.character(lapply(names(df)[17:26], change))
但是“X”没有改变。为什么?
> a
[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10"
【问题讨论】:
-
那是因为您没有保存第一次操作的结果。你应该先
d <- gsub("X","reach",d)然后gsub("\\.","",d)。 -
您也可以将两个
gsubs 嵌套在一起:gsub("X","reach", gsub("\\.","",d))。 -
beginneR 建议更好。这样您就可以放弃
for循环并使您的解决方案完全矢量化,如a <- gsub("X","reach", gsub("\\.","",names(df)[17:26])) -
嗨,在标记之前花点时间阅读标记摘录。 dataframes 用于熊猫,而您需要 data.frame 在这里。下次小心点。请参阅此元帖子。 Warn [r] users from adding [dataframes] tag instead of [data.frame] tag