R 如何通过仅获取拆分器字符串的第一个值来重命名数据帧列

R 如何通过仅获取拆分器字符串的第一个值来重命名数据帧列,r,dataframe,tidyverse,R,Dataframe,Tidyverse,我有以下数据框: 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 s 1

我有以下数据框:

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            s
1            2          4.0
2            3          0.2
3            5        100.3

我该怎么做?(可能的话?

我们可以使用
sub
来匹配
(转义
\.
)以获得
的字面含义,因为它是一个元字符,表示任何字符),后跟其他字符(
*
),并用空格替换它

names(df) <- sub("\\..*", "", names(df))

我们可以使用
sub
来匹配
(转义
\.
)以获得
的字面意义,因为它是一个元字符,表示任何字符),后跟其他字符(
*
),并用空格替换它

names(df) <- sub("\\..*", "", names(df))

我们可以使用
setnames
dplyr
重命名列的
名称

library(dplyr)
df %>%
 setnames(sub("\\..*", "", names(.)))

df

#  n     s
#1 2   4.0
#2 3   0.2
#3 5 100.3

我们可以使用
setnames
dplyr
重命名列的
名称

library(dplyr)
df %>%
 setnames(sub("\\..*", "", names(.)))

df

#  n     s
#1 2   4.0
#2 3   0.2
#3 5 100.3

另一种解决方案使用基本R函数
子字符串
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

names(df)另一种解决方案使用基本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
名称(df)