R在旋转时切换字符串的第一部分和第二部分
我有一个带有列的data.frame:R在旋转时切换字符串的第一部分和第二部分,r,R,我有一个带有列的data.frame: names(data) = ("newid","Player.WR","data_col.WR","Trend.WR","Player.QB","data_col.QB","Trend.QB","Player.RB","data_col.RB","Trend.RB&qu
names(data) = ("newid","Player.WR","data_col.WR","Trend.WR","Player.QB","data_col.QB","Trend.QB","Player.RB","data_col.RB","Trend.RB","Player.TE","data_col.TE","Trend.TE" )
但是,我需要在句点处翻转每个名称的第一和第二部分,使其看起来像这样:
名称(数据)=(“newid”、“WR.Player”、“WR.data\u col”、“WR.Trend”、“QB.Player”、“QB.data\u col”、“QB.Trend”、“RB.Player”、“RB.Trend”、“TE.Player”、“TE.data\u col”、“TE.Trend”
)
我最初的想法是尝试执行strsplit
,然后以某种方式执行lappy
语句来重新排序,但我不确定如何使lappy
工作
谢谢 我建议下一种方法使用函数交换值的位置和
lappy()
:
最后的输出可以保存在一个新的向量中,如
vecnamesnew,我建议下一种方法是使用函数交换值的位置和lappy()
:
最后一个输出可以保存在一个新的向量中,如vecnamesnew和一个名为v
的向量,您还可以尝试:
v <- c("newid","Player.WR","data_col.WR","Trend.WR",
"Player.QB","data_col.QB","Trend.QB","Player.RB",
"data_col.RB","Trend.RB","Player.TE","data_col.TE","Trend.TE")
gsub(
'(.*)\\.(.*)',
'\\2\\.\\1',
v
)
并将其直接分配给名称:
names(data) <- gsub('(.*)\\.(.*)', '\\2\\.\\1', v)
名称(数据)使用名称向量v
,您还可以尝试:
v <- c("newid","Player.WR","data_col.WR","Trend.WR",
"Player.QB","data_col.QB","Trend.QB","Player.RB",
"data_col.RB","Trend.RB","Player.TE","data_col.TE","Trend.TE")
gsub(
'(.*)\\.(.*)',
'\\2\\.\\1',
v
)
并将其直接分配给名称:
names(data) <- gsub('(.*)\\.(.*)', '\\2\\.\\1', v)
names(data)Arg0naut91的答案非常简洁,我建议使用Arg0naut91的方法。但是,为了使用strsplit
和lapply
提供(某种程度上)简洁的解决方案,对于那些不熟悉gsub语法的人来说,(可能)可读性更强,我提交以下内容:
names<-c("newid","Player.WR","data_col.WR","Trend.WR",
"Player.QB","data_col.QB","Trend.QB","Player.RB",
"data_col.RB","Trend.RB","Player.TE","data_col.TE","Trend.TE" )
newnames<-lapply(names,function(x) paste(rev(unlist(strsplit(x,split="\\."),use.names=FALSE)),collapse="."))
print(newnames)
作为输出。Arg0naut91的答案非常简洁,我建议使用Arg0naut91的方法。但是,为了使用strsplit
和lapply
提供(某种程度上)简洁的解决方案,对于那些不熟悉gsub语法的人来说,(可能)可读性更强,我提交以下内容:
names<-c("newid","Player.WR","data_col.WR","Trend.WR",
"Player.QB","data_col.QB","Trend.QB","Player.RB",
"data_col.RB","Trend.RB","Player.TE","data_col.TE","Trend.TE" )
newnames<-lapply(names,function(x) paste(rev(unlist(strsplit(x,split="\\."),use.names=FALSE)),collapse="."))
print(newnames)
作为输出
[1] "newid" "WR.Player" "WR.data_col" "WR.Trend" "QB.Player" "QB.data_col" "QB.Trend"
[8] "RB.Player" "RB.data_col" "RB.Trend" "TE.Player" "TE.data_col" "TE.Trend"