我有一些示例代码,其中包含for循环并创建一些这样的图(我的实际数据创建了数千个图):
xy <- structure(list(NAME = structure(c(2L, 3L, 1L, 1L), .Label = c("CISCO","JOHN", "STEPH"), class = "factor"), ID = c(41L, 49L, 87L, 87L), X_START_YEAR = c(1965L, 1948L, 1959L, 2003L), Y_START_VALUE = c(940L,-1760L, 110L, 866L), X_END_YEAR = c(2005L, 2000L, 2000L, 2007L), Y_END_VALUE = c(940L, -1760L, 110L, 866L), LC = structure(c(1L,1L, 2L, 2L), .Label = c("CA", "US"), class = "factor")), .Names = c("NAME", "ID", "X_START_YEAR", "Y_START_VALUE", "X_END_YEAR", "Y_END_VALUE","LC"), class = "data.frame", row.names = c(NA, -4L))
ind <- split(xy,xy$ID) # split by ID for …Run Code Online (Sandbox Code Playgroud) 我正在绘制baseR中的多个图形,我试图在我的图形的下部右下角绘制一个文本.我尝试过使用,mtext()但这并没有给我想要的结果.你会怎么做?最终的想法是生成如下图所示的内容.我怎么能这样做?

这是我用来生成图的代码.
xy <- data.frame(NAME=c("NAME1", "NAME1","NAME1","NAME1","NAME2","NAME2","NAME2"),ID=c(47,47,47,47,259,259,259),YEAR=c(1932,1942,1965,1989,2007,2008,2014),VALUE=c(0,NA,-6,-16,0,-9,-28), test=c("text1","text1","text1","text1","text2","text2","text2"))
# split data by index
ind <- split(x = xy,f = xy[,'ID'])
plot1 <- function(x) {
fname <- paste0(x[1, 'ID'], '.png')
png(fname, width=1679, height=1165, res=150)
par(mar=c(6,8,6,5))
plot(x = c(1946, 2014),
y = range(x$VALUE, na.rm=TRUE),
type='n',
main=x[1, 'NAME'],
xlab="Time [Years]",
ylab="Value [m]")
axis(2, at = seq(-100000, 100000, 100), cex.axis=1, labels=FALSE, tcl=-0.3)
points(x[,c('YEAR','VALUE')], type="l", lwd=2)
points(x[,c('YEAR','VALUE')], type="p", lwd=1, cex=0.5, pch=21, bg='white')
abline(h=0)
mtext(x$test, side=1, )
dev.off()
}
plot2 <- function(x) {
fname <- …Run Code Online (Sandbox Code Playgroud) 我想在data.frame中xy为每个组绘制数据(定义方式ID).当1946年之前的一年是一组时,plot 2应该执行.当年份在1946年至2014年之间时,plot1应该执行.
我的问题:没有NA值就可以正常工作,但由于我有数据空白,我依靠NAs来定义这些数据空白.这就是我收到错误的原因:error in plot.window(need finite 'ylim' values).我试图在y轴放入finite=T,plot1但这会产生subscript out of bounds错误.有没有办法解决这个问题,图形是否正确绘制?
以下是我的代码:它很长但是大部分代码都包含plot()我依赖的选项.
# read in sample data and split it up by group (defined by ID)
xy <- data.frame(NAME=c("NAME2","NAME2","NAME2","NAME2","NAME2","NAME3","NAME3","NAME3","NAME3","NAME5","NAME5","NAME5","NAME5"), ID=c(48,48,48,48,48,32,32,32,32,67,67,67,67),YEAR=c(1981,1983,1984,1988,1989,1984,1984,1988,1988,1899,1933,1948,1958),VALUE=c(0,205,-570,0,-310,-3680,-3680,NA,-3680,0,NA,13,-98))
ind <- split(x = xy,f = xy[,'ID'])
# Plot Scenario 1: if only years between 1946 and 2014 are present for each group do this:
plot1 <- function(x) {
fname <- paste0(x[1, …Run Code Online (Sandbox Code Playgroud) 我有一个data.frame dat存储我的正常数据和组定义ID.
data <- structure(list(NAME = structure(c(1L, 1L, 2L), .Label = c("NAME1", "NAME2"), class = "factor"), ID = c(23L, 23L, 57L), REF_YEAR = c(1920L, 1938L, 1869L), SURV_YEAR = c(1938L, 1962L, 1872L), VALUE = c(20L, 40L, 34L)), .Names = c("NAME", "ID", "REF_YEAR", "SURV_YEAR","VALUE"), class = "data.frame", row.names = c(NA, -3L))
NAME ID REF_YEAR SURV_YEAR VALUE
1 NAME1 23 1920 1938 20
2 NAME1 23 1938 1962 40
3 NAME2 57 1869 1872 34
Run Code Online (Sandbox Code Playgroud)
我有一个data.frame,dat_q我想比较一下 …
循环的结果是,文件夹中有很多文件没有文件扩展名。
我怎么能在文件夹中添加文件扩展名(png格式)的所有文件,同时保持原来的名称,例如,从NAME1到NAME1.png,NAME3到NAME3.png,NAME6到NAME6.png,使用R等?
我有超过 10 个文件(最后有数百个......)。我在 R 中生成的 png 格式保存到一个文件夹中。
我的问题:如何将这些文件保存到多图(例如,一页上的 4 个数字按 2 行和 2 列排列)?
我知道这可以通过使用合并到绘图循环中,par(mfrow=c(2,2))但是我怎么能在生成后调用文件夹中的文件呢?
我有来自 .csv 文件的以下数据框,其中包含更多行,但为了保持简单,我将其范围缩小到这三行。您还可以在此处访问 csv 文件:https ://dl.dropboxusercontent.com/u/16277659/filter.csv
NAME; YEAR; VALUE
SAMPLE1; 1969; 6
SAMPLE1; 1970; -6
SAMPLE1; 1971; -7
SAMPLE1; 1972; =-X
SAMPLE1; 1972; ST
SAMPLE1; 1972; 3
SAMPLE1; 1975; -7
SAMPLE1; 1976; 3
SAMPLE1; 1977; 3
SAMPLE1; 1978; 0
SAMPLE2; 1991; -15
SAMPLE2; 1992; =X
SAMPLE2; 1992; -58
SAMPLE2; 1994; -40
Run Code Online (Sandbox Code Playgroud)
我想做的是:有时我有定性值(如 =-X、ST 等),我不一定想放弃这些值,但如果同年有一个数值(在 SAMPLE1 1972 = -X 和 ST),我想只保留数值并删除其他值。
你会怎么做?感谢您的帮助。
我有几个data.frames环境,我想保存到单独的.RData文件中.有没有能够保存到整个工作区的功能?
我通常只使用以下函数执行此操作:
save(x, file = "xy.RData")
Run Code Online (Sandbox Code Playgroud)
但有没有办法可以一次性保存所有data.frames?
我在R中的数据框中的采样数据看起来像这样.
NAME ID SURVEY_YEAR REFERENCE_YEAR SUM SUM_REFYEAR
1 NAME1 47 1960 1959 -6 0
2 NAME1 47 1961 1960 -10 -6
3 NAME1 47 1965 1963 -23 -10
4 NAME2 259 2007 2004 -9 0
5 NAME2 259 2010 2009 NA 0
6 NAME2 259 2014 2011 -40 -9
7 NAME3 765 1888 1885 5 0
8 NAME3 765 1889 1888 12 5
9 NAME3 765 1890 1889 22 12
Run Code Online (Sandbox Code Playgroud)
我正在使用下面的代码修改数据,从而生成此数据帧.
NAME ID SURVEY_YEAR REFERENCE_YEAR SUM SUM_REFYEAR
1 NAME1 47 …Run Code Online (Sandbox Code Playgroud)