我有以下数据框:
df <- structure(list(n.foldchange = c(2, 3, 5), s.foldchange = c(4,
0.2, 100.3)), .Names = c("n.foldchange", "s.foldchange"), row.names = c(NA,
-3L), class = "data.frame")
看起来像这样:
n.foldchange s.foldchange
1 2 4.0
2 3 0.2
3 5 100.3
我想要做的是通过删除.
之后的值来重命名该列。
屈服
n s
1 2 4.0
2 3 0.2
3 5 100.3
我该怎么做? (可能tidyverse
?)
答案 0 :(得分:2)
我们可以使用names
setnames
重命名dplyr
列。
library(dplyr)
df %>%
setnames(sub("\\..*", "", names(.)))
df
# n s
#1 2 4.0
#2 3 0.2
#3 5 100.3
答案 1 :(得分:1)
我们可以使用sub
执行此操作以匹配.
(转义.
(\\.
)以获取.
的字面含义,因为它是一个元字符,表示任何字符)后跟其他字符(.*
)并用空格替换
names(df) <- sub("\\..*", "", names(df))
或使用substring
或substr
names(df) <- substring(names(df), 1,1)
答案 2 :(得分:1)
另一种解决方案使用基本R函数substring
和regexpr
。
names(df) <- substring(names(df), 1, regexpr(".", names(df), fixed=TRUE)-1)
df
n s
1 2 4.0
2 3 0.2
3 5 100.3
此处,regexpr
用于标识变量名中第一个点的位置。这个位置(减1)被赋予substring
,它返回原始变量名的子串,从第一个字符开始,到第一个点之前结束。