R 认识到-&引用;签名和分隔数据

R 认识到-&引用;签名和分隔数据,r,data-manipulation,R,Data Manipulation,我是R的完全初学者。我下面的数据是由@akrun生成的,下面是代码: tennis4 <- structure(list(Tournament = "Win-Loss", `2005` = "3-2", `2006` = "6-4", `2007` = "5-2", `2008` = "12-4", `2009` = "15-4", `2010` = "16-4", `2011` = "21-4", `2012` = "22-3", `2013` = "17-2", `2014` =

我是R的完全初学者。我下面的数据是由@akrun生成的,下面是代码:

tennis4 <- structure(list(Tournament = "Win-Loss", `2005` = "3-2", `2006` = "6-4", 
`2007` = "5-2", `2008` = "12-4", `2009` = "15-4", `2010` = "16-4", 
`2011` = "21-4", `2012` = "22-3", `2013` = "17-2", `2014` = "17-4", 
`2015` = "19-4", `2016` = "19-2", `W-L` = "172-39", `Win %` = 81.52), 
.Names = c("Tournament", 
"2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", 
"2013", "2014", "2015", "2016", "W-L", "Win %"), row.names = c(NA, 
-1L), class = "data.frame")

tennis4这里有一个选项可以获得直线图

m1 <- t(sapply(tennis4[grep("^[0-9]+$", names(tennis4))], 
         function(x) scan(text=x, what = numeric(), quiet=TRUE, sep="-")))
colnames(m1) <- scan(text=tennis4[,1], what = "", quiet=TRUE, sep="-")
matplot(m1, type = "l", xaxt = "n", col = c(2, 4), ylab = "value")
axis(1, at = seq_len(nrow(m1)), labels = row.names(m1))
legend("topright", inset=.05, legend= colnames(m1), pch=1, col=c(2,4), horiz=TRUE)

m1
tidyr::gather
tidyr::separate
,但请不要发布数据图片;请阅读。您的预期输出是什么?很抱歉。我已经编辑了这篇文章,所以它不包含数据的图片。嗨,阿克伦,我想把数字(3,6,5)放在一个新的一行,叫做“赢”,把数字(2,4,2)放在“输”。嗨,阿克伦,谢谢你的回答。是的,它有效。我对R完全是个初学者。你介意告诉我你从哪里得到“^[0-9]+$”来告诉R负号吗?@嗯,它是用来对只有数字的列进行子集设置的,即2005:2016。它表示从字符串
^
的开头开始,匹配一个或多个数字(
[0-9]+
),直到字符串的
$
结尾。感谢您的解释!还有一件事,当您重新创建我的数据时,“row.names=c(NA,-1L)”是什么意思?似乎如果没有这个,数据就会崩溃。@嗯,这是
dput
的输出,也就是说,在您使用
read.csv/read.table
读取数据之后<代码>田纳西4谢谢你。这将使我的问题更容易理解和解决。非常感谢你的回答
tennis4 <- structure(list(Tournament = "Win-Loss", `2005` = "3-2", `2006` = "6-4", 
`2007` = "5-2", `2008` = "12-4", `2009` = "15-4", `2010` = "16-4", 
`2011` = "21-4", `2012` = "22-3", `2013` = "17-2", `2014` = "17-4", 
`2015` = "19-4", `2016` = "19-2", `W-L` = "172-39", `Win %` = 81.52), 
.Names = c("Tournament", 
"2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", 
"2013", "2014", "2015", "2016", "W-L", "Win %"), row.names = c(NA, 
-1L), class = "data.frame")