这是我的样本数据.我想在一个情节中绘制两个y1和y2反对x1的情节.这就是我做的:
library(ISLR)
library(ggplot2)
y1<-scale(Auto$horsepower,scale = T,center=T)
y2<-scale(Auto$weight,scale = T,center=T)
x1<-Auto$mpg
df<-data.frame(y1,y2,x1)
p<-ggplot(df,aes(x=x1)) +
geom_point(aes(y = y1), shape = 16) +
geom_point(aes(y = y2), shape = 2)
Run Code Online (Sandbox Code Playgroud)
我想为y1和y2插入一条二次线对x.我这样做了:
p + stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 1)
Run Code Online (Sandbox Code Playgroud)
它引发了一个错误:
Warning message:
Computation failed in `stat_smooth()`:
variable lengths differ (found for 'x')
Run Code Online (Sandbox Code Playgroud)
除此之外,该stat_smooth命令只能将一个二次线,而我需要两个二次线都y1和y2.
我是如何在R中实现这一目标的?
谢谢
样本数据:
x<-runif(100, min=0, max=1)
y<-runif(100, min=0, max=1)
dif<-x-y
dat<-data.frame(x,dif)
Run Code Online (Sandbox Code Playgroud)
我想要做的是在数据框中创建另一列dat名为suit.如果x小于0.15并且dif小于0,则suit应该具有值3.如果x小于0.15并且dif大于0,则suit应该具有值2并且如果dif大于0,则suit具有值1.
这是我准备的代码.
if(dat$x<0.15 & dat$dif<0){
dat$suit<-3
} else {
if(dat$x>=0.15 & dat$dif<0){
dat$suit<-2
} else {
dat$suit<-1
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了所有的值为dat$suit1.我不确定我在这里做错了什么.
谢谢您的帮助.
我正在尝试创建 5 个光栅文件并使用单独的名称写入每个光栅文件。到目前为止,我已经成功实现了这一点:
c=5
for (i in 1:c){
z<-RFsimulate(x=x,y=y,grid=TRUE,model = model,maxGB=4.0)
a<-raster(z)
projection(a) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
writeRaster(raster(a),filename="raster[i].tif")
}
Run Code Online (Sandbox Code Playgroud)
但我在工作目录中只找到一个光栅文件(光栅 1)。我想我会有五个光栅文件名称 raster1、raster2.....raster5。谁能帮我看看我的代码有什么问题吗?
谢谢
这是我制作的样本数据和情节.
library(ggplot2)
value<-c(-1.01, -0.02,1.61,0.60, -0.98,0.19,4.68,-0.86,-3.52,-1.85,-2.08,-0.48,0.10,-1.05,-0.003)
sd<-c(1.40,0.48,0.83,0.41,0.80,0.36,1.52,0.30,1.19,0.44,1.33,0.45,0.64,0.35,1.20)
variable<-rep(c("A","B","C","D","E"),times=3)
clss<-rep(c("NC","RC","LC"),each=5)
df<-data.frame(value,variable,clss)
ggplot(df,aes(x=variable,y = value))+
geom_point()+
geom_hline(yintercept = 0, size = I(0.2), color = I("red")) +
geom_errorbar(aes(ymin = value - 1.96 * sd, ymax = value + 1.96 * sd),width = .1)
Run Code Online (Sandbox Code Playgroud)
由于每个A,B,C,D和E有三个点,我想并排绘制三个点而不是单个列.这也意味着我需要在标签A和B,B和C之间有一些间距,以便在图上分别看到A,B,C,D和E的三个点.
我试图使用抖动
但它只会改变我的观点而不是我的错误条.另外我需要将A的位置作为三点的中间位置.同样适用于B,C,D和E.
我有一个包含三列的数据集.
## generate sample data
set.seed(1)
x<-sample(1:3,50,replace = T )
y<-sample(1:3,50,replace = T )
z<-sample(1:3,50,replace = T )
data<-as.data.frame(cbind(x,y,z))
Run Code Online (Sandbox Code Playgroud)
我想要做的是:
选择所有三列都有1的行
选择那些只有两列有1的行(可以是任何列)
只选择那些只有列有1的行(可以是任何列)
基本上我想要任何两列(第二种情况)满足条件而不是任何特定列.
我知道使用行选择
subset<-data[c(data$x==1,data$y==1,data$z==1),]
Run Code Online (Sandbox Code Playgroud)
但是这只根据特定列的条件选择那些行,而我希望三/两列中的任何一列满足我的标准
谢谢