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)