小编Seb*_*ian的帖子

根据值绘制带条件颜色的折线图

我想绘制折线图.根据值,它应该改变它的颜色.我发现的是:

plot(sin(seq(from=1, to=10,by=0.1)),type="p", 
       col=ifelse(sin(seq(from=1, to=10,by=0.1))>0.5,"red","yellow"))
Run Code Online (Sandbox Code Playgroud)

这样可行.但是一旦我从type ="p"变为type ="l",条件着色就会消失.

这种行为有意吗?

什么是基础图形的解决方案,以绘制具有不同颜色的功能线?

plot r

11
推荐指数
2
解决办法
1万
查看次数

在R中存储结果的好策略是以列表形式存储,以便稍后通过名称而不是索引来访问它?

当我应用某些建模技术时,我想自动化结果创建过程.因此,我将使用不同的参数(例如,层次聚类距离和链接方法).结果将具有矩阵形式,以便我可以通过指定模型参数(例如,单个,欧几里德)来访问单个结果.在数据框中,我可以命名列和行,并简单地访问元素df[rname[1],cname[1]].到目前为止,我读到它不可能使用数据框对象来存储列表结果.所以我需要列表来存储列表结果.但在列表中,我只能指定lst$cname[1]而不是两个维度.我对么?

# data frame layout for numeric results does not work with list results
rname<-c("u","v","w")
cname<-c("ave","single")

# dataframe for results but does not work for results which are lists
paste.1<-function(x,y) paste(x,y,sep=".")
df1<-data.frame(lapply(cname,paste.1,x=rname),row.names=rname)
colnames(df1)<-cname

# creating list for results - do not get a good idea to proceed from here Advices??
lst<-(lapply(cname,paste.1,x=rname))
names(lst)<-cname

# results example - could be anything else 
# with a dataframe I could use df1[rname,cname]<-foo(rname,cname)
# with lists I guess its not as …
Run Code Online (Sandbox Code Playgroud)

r

9
推荐指数
1
解决办法
4484
查看次数

函数工作(boot.stepAIC)但在另一个函数 - 环境问题中引发错误?

我今天在R代码中意识到了一种奇怪的行为.我尝试了一个包{boot.StepAIC},其中包含一个用于AIC逐步回归结果的bootstrap函数.但是我认为统计背景不是问题(我希望如此).
我可以使用R顶层的函数.这是我的示例代码.

require(MASS)
require(boot.StepAIC)

n<-100
x<-rnorm(n); y<-rnorm(n,sd=2); z<-rnorm(n,sd=3); res<-x+y+z+rnorm(n,sd=0.1)
dat.test<-as.data.frame(cbind(x,y,z,res))
form.1<-as.formula(res~x+y+z)
boot.stepAIC(lm(form.1, dat.test),dat.test) # should be OK - works at me
Run Code Online (Sandbox Code Playgroud)

但是,我想把它包装在一个自己的函数中.我将数据和公式传递给该函数.但我在boot.stepAIC()中遇到错误:

100个引导样本中的模型拟合失败strsplit中的错误(nam.vars,":"):非字符参数

# custom function
fun.boot.lm.stepAIC<-function(dat,form) {
  if(!inherits(form, "formula")) stop("No formula given")
  fit.lm<-lm(formula=form,data=dat)
  return(boot.stepAIC(object=fit.lm,data=dat))
 }
fun.boot.lm.stepAIC(dat=dat.test,form=form.1)
# results in an error 
Run Code Online (Sandbox Code Playgroud)

那错误在哪里?我想它必须与当地和全球环境有关,不是吗?

r statistics-bootstrap

5
推荐指数
1
解决办法
1487
查看次数

被拆分总是在内部对结果数据帧进行排序

我只是想知道我是否可以确定split()总是对结果进行排序?排序的规则是什么?该示例有效,但我没有在帮助页面中找到相应的行.对不起,如果我误解了帮助.

 dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac = c(2,1))
 split(dat.exmpl, dat.exmpl$fac)
 dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac=rep(c("blueb","bluea")))
 split(dat.exmpl, dat.exmpl$fac)
Run Code Online (Sandbox Code Playgroud)

ExtraQ:有没有办法保持提供的订单?

r

5
推荐指数
1
解决办法
823
查看次数

用相应的字母代替字母

我坚持一个小问题,我没有找到合适的搜索条件.我有来自"A" - "N"的字母,并希望根据它们在字母表中的位置用"A" - "G"替换大于"G"的字母.使用gsub的似乎很麻烦.或者有没有可以更智能地做到这一点的正则表达式?

k <- rep(LETTERS[1:14],2)
gsub(pattern="H", replace="A", x=k)
gsub(pattern="I", replace="B", x=k)
gsub(pattern="J", replace="C", x=k)
gsub(pattern="K", replace="D", x=k)
# etc.
Run Code Online (Sandbox Code Playgroud)

是不是有一些方法我可以将字符转换为整数然后简单地在整数值内计算,然后再回头?或者是否有任何相反的信件? as.numeric()as.integer()返回NA.

regex r

5
推荐指数
1
解决办法
214
查看次数

R中带小数的POSIX变量的性能

我刚刚意识到,对于带有两个小数位的POSIX变量,以下函数successor()显示出显着的性能损失.除此之外,for循环可能不是很好的r-style*.我很惊讶在我的系统中,带有两位小数的POSIX比没有小数的POSIX慢近30倍(20000步).带小数的POSIX甚至比仅将向量存储为字符要慢.

那个缓慢的性能是因为successor()函数?或者一般来说,更多的建议能否在R中将时间/日期变量存储为字符,并在真正需要时进行转换?

successor <- function(z) {
y<-as.vector(z)
for(i in 1:NROW(z)) {
y[i] <- if(i == NROW(z)) NA else z[i+1]
}
return(y)
}

u<-rep(strptime("15.01.2010 10:21:52.85",format="%d.%m.%Y %H:%M:%OS"),20000) # fragments of seconds stored
v<-seq(c(ISOdate(2011,09,12)),by="min", length.out=20000) # no fragments of seconds saved
u.posix.time.small<-system.time(successor(u[1:1000]))
u.char.time.small<-system.time(successor(as.character(u[1:1000])))
u.posix.time.big<-system.time(successor(u[1:20000]))
u.char.time.big<-system.time(successor(as.character(u[1:20000])))

v.posix.time.small<-system.time(successor(v[1:1000]))
v.char.time.small<-system.time(successor(as.character(v[1:1000])))
v.posix.time.big<-system.time(successor(v[1:20000]))
v.char.time.big<-system.time(successor(as.character(v[1:20000])))
rbind(u.posix.time.small,u.posix.time.big,u.char.time.small, u.char.time.big,v.posix.time.small, v.posix.time.big, v.char.time.small,v.char.time.big)[,1:3]
Run Code Online (Sandbox Code Playgroud)

*在绘图中使用段(x0 = x [i],x1 = x [i + 1],y0 = y [i],y1 = y [i + 1])时,我遇到了前任/成功的事情.无论如何,我想必须有另一种方式来解决后继者/前任,因为两次存储值似乎浪费了我.但我不是程序员只是用户.

posix r

1
推荐指数
1
解决办法
165
查看次数

标签 统计

r ×6

plot ×1

posix ×1

regex ×1

statistics-bootstrap ×1