小编Jos*_*ich的帖子

将"By"分类到R中的数据框中

我正在使用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)

任何帮助,将不胜感激.

r dataframe

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

Rscript无法找到功能

我需要通过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)

你知道问题的来源以及如何解决吗?

r rscript

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

如何多次绑定同一个向量?

如何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.

r

13
推荐指数
2
解决办法
5221
查看次数

基于另一数据帧的内容子集数据帧

我有两个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 dataframe

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

R-forge vs Rforge?

我是R包开发的新手.

我只是想知道哪一个更好的R- forgeRforge.net?它们之间的主要区别是什么?

r

12
推荐指数
3
解决办法
1413
查看次数

从日期和小时格式更改为数字格式

我在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)

time r date

12
推荐指数
2
解决办法
5万
查看次数

R中S4对象的总和

我有一个S4类,我想定义这些对象的线性组合.

是否可以在这个特定的类上发送*+运行?

r operator-overloading s4

12
推荐指数
2
解决办法
1217
查看次数

哪个是在R中重复应用脚本到n .csv文件的最佳方法?

我的情况:

  1. 我有许多csv文件都具有相同的后缀.csv,但文件名的前两个字符是不同的(即AA01.csv,AB01.csv,AC01.csv等)
  2. 我有一个R脚本,我想在每个文件上运行.该文件基本上从.csv中提取数据并将它们分配给向量/将它们转换为时间序列对象.(例如,AA01 xts timeseries对象,AB01 xts对象)

我想要实现的目标:

  1. 将脚本嵌入更大的循环(或适当),以顺序运行每个文件并应用脚本
  2. 删除创建的中间对象(请参阅下面的代码段)
  3. 给我留下从每个原始数据文件创建的最终xts对象(即AA01到AC01等作为值/向量等)

在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)

任何有关如何做到这一点的帮助将非常感激.

loops r xts

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

调试R代码时如何跳过循环

我是R中的新调试使用traceback()option(error=recover)debug(function)试图找到我在R包中出错的原因.

我正在调试一个带有大循环的函数,我想要"循环"循环到下一个块.我怎样才能做到这一点?我知道你可以放断点,但我不知道循环在哪里,下一步是哪一步.我在一个唯一的文本环境中,所以调试包的图形帮助可能没有帮助.

总结一下,如何在调试时退出循环,以及在调试时如何进入调试功能?

可能这已经回答了,我已经错过了.我已经看到了几个SO R调试问题,但没有人回答我所知道的这个部分.

debugging r

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

较长的物体长度不是较短物体长度的倍数?

我不明白为什么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)

这会导致警告.

目的是减去工作日的平均值.尽管有警告,它似乎仍然有效,但我应该担心什么?

修订后的解决方案:尝试2

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)

然后检查一些日期,它似乎与日历一致.

r xts

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

标签 统计

r ×10

dataframe ×2

xts ×2

date ×1

debugging ×1

loops ×1

operator-overloading ×1

rscript ×1

s4 ×1

time ×1