我正在使用by()来通过我的数据框中的因子来评估函数,但我需要以表格形式使用结果.
我已经看到使用as.data.frame.table将"By"类对象放入数据框中,但我不确定这是否仅在by()函数中使用的因子数量时才有效与"by"输出的长度相同.使用as.data.frame.table我收到以下错误
"...参数意味着不同的行数:10,33"
还有另一种方法吗?可以使用tapply而不是by()来获得不同的输出类吗?
顺便说一下,我用by()将我的数据转换成频率表,然后按标准箱重新组合
BT_by <- by(BT_H, BT_H$Tax_pp, function(BT_H) hist(rep.int(BT_H$Altitude, BT_H$Count), breaks = seq(0,6600,200), plot = FALSE)$counts)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我需要通过bash shell运行几个脚本,Rscript并且我使用的一些函数需要该函数isGeneric.但是,在这种情况下,流程就像那样(例如):
Error in .getLogLik() : could not
find function "isGeneric"
Calls: main -> dredge -> .getLik -> .getLogLik
Execution halted
Run Code Online (Sandbox Code Playgroud)
这可以如下再现
# in the bash shell
echo "isGeneric('apply')" > /tmp/test.R
Rscript /tmp/test.R
Run Code Online (Sandbox Code Playgroud)
结果:
Error: could not find function "isGeneric"
Execution halted
Run Code Online (Sandbox Code Playgroud)
但是,如果我们打开一个R会话并键入以下内容,它的工作原理如下:
# in the R shell
isGeneric('apply')
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
你知道问题的来源以及如何解决吗?
如何o = c(1,2,3,4)多次绑定相同的向量以获得如下矩阵:
o = array(c(1,2,3,4,1,2,3,4,1,2,3,4), dim(c(4,3))
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
[4,] 4 4 4
Run Code Online (Sandbox Code Playgroud)
比一个更好的方式:o = cbind(o,o,o)也许更广义(duplicate)?我需要这个来指定元素的颜色textplot.
我有两个data.frames.例如,让我们说它们看起来像这样:
df1 <- data.frame(x=rep(letters[1:26], 16))
df2 <- data.frame(y=letters[1:4])
Run Code Online (Sandbox Code Playgroud)
我想做的是子集'df1'包含第一列值与'df2'第一列中的任何值匹配的行.
现在,我试过了:
subset(df1, df1$x == df2$y)
Run Code Online (Sandbox Code Playgroud)
但这告诉我,我需要同样大小的data.frames.思考?
我在R工作,我需要从格式的列更改
9/27/2011 3:33:00 PM
Run Code Online (Sandbox Code Playgroud)
到一个值格式.在Excel中,我可以使用该功能,value()但我不知道如何在R中执行此操作.
我的数据如下:
9/27/2011 15:33 a 1 5 9
9/27/2011 15:33 v 2 6 2
9/27/2011 15:34 c 3 7 1
Run Code Online (Sandbox Code Playgroud) 我有一个S4类,我想定义这些对象的线性组合.
是否可以在这个特定的类上发送*和+运行?
我的情况:
我想要实现的目标:
在R中嵌入此脚本的正确方法是什么?对不起,我是编程菜鸟!
我的脚本代码如下...每个CSV中每列的标题是DATE,TIME,VALUE
# Pull in Data from the FileSystem and attach it
AA01raw<-read.csv("AA01.csv")
attach(AA01raw)
#format the data for timeseries work
cdt<-as.character(Date)
ctm<-as.character(Time)
tfrm<-timeDate(paste(cdt,ctm),format ="%Y/%m/%d %H:%M:%S")
val<-as.matrix(Value)
aa01tsobj<-timeSeries(val,tfrm)
#convert the timeSeries object to an xts Object
aa01xtsobj<-as.xts(tsobj)
#remove all the intermediate objects to leave the final xts object
rm(cdt)
rm(ctm)
rm(aa01tsobj)
rm(tfrm)
gc()
Run Code Online (Sandbox Code Playgroud)
然后在每个.csv文件上重复,直到提取所有xts对象.
也就是说,我们最终将在R内,准备进一步应用是:
aa01xtsobj, ab01xtsobj, ac01xtsobj....etc
Run Code Online (Sandbox Code Playgroud)
任何有关如何做到这一点的帮助将非常感激.
我是R中的新调试使用traceback()和option(error=recover)并debug(function)试图找到我在R包中出错的原因.
我正在调试一个带有大循环的函数,我想要"循环"循环到下一个块.我怎样才能做到这一点?我知道你可以放断点,但我不知道循环在哪里,下一步是哪一步.我在一个唯一的文本环境中,所以调试包的图形帮助可能没有帮助.
总结一下,如何在调试时退出循环,以及在调试时如何进入调试功能?
可能这已经回答了,我已经错过了.我已经看到了几个SO R调试问题,但没有人回答我所知道的这个部分.
我不明白为什么R给我一个关于"较长的物体长度不是较短物体长度的倍数"的警告
我有这个对象,它通过在xts系列上进行聚合生成,给出工作日中位数:
u <- aggregate(d, list(Ukedag = format(index(d),"%w")), median)
1 314.0
2 282.5
3 270.0
4 267.0
5 240.5
Run Code Online (Sandbox Code Playgroud)
然后我尝试将它应用到我的原始xts系列,看起来像这样(只是更长)
head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286
Run Code Online (Sandbox Code Playgroud)
使用:
coredata(d) <- coredat(d) - u[format(index(d),"%w")];
Run Code Online (Sandbox Code Playgroud)
这会导致警告.
目的是减去工作日的平均值.尽管有警告,它似乎仍然有效,但我应该担心什么?
apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )
Run Code Online (Sandbox Code Playgroud)
我确实有一个严重的错误.这没有给出任何警告,我通过这样做测试:
apply.daily(d, function(x) u[format(index(x), "%w")] )
Run Code Online (Sandbox Code Playgroud)
然后检查一些日期,它似乎与日历一致.