小编mar*_*omo的帖子

在特定文件上使用R的内部tar函数

R有一个方便的跨平台tar()函数,可以tar和gzip文件.看来这个函数是为了整个目录而设计的.我希望使用此函数来tar和压缩目录的子集或单个文件.但是,我似乎无法做到这一点.我期待以下内容在当前工作目录中查找单个csv文件:

tar( "tst.tgz", "myCsv.csv", compression="gzip" )
Run Code Online (Sandbox Code Playgroud)

那么只能在目录上使用tar()函数吗?

我暂时通过创建一个临时目录,复制我的文件,然后整个临时目录来解决这个问题.但我希望有一个更简单的解决方案.这不需要复制文件,这对于大文件来说有些耗时.

r tar

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

如何从数据框中删除部分重复项?

我导入的数据描述了在不同位置进行的数值测量,以获得或多或少均匀分布的时间戳.有时这种"均匀分布"并不是真的,我必须丢弃一些值,只要每个位置的每个时间戳都有一个值,那么哪个值并不重要.

我对数据做了什么?我将它添加到resultdata.frame.我有一个timestamp列和timestamp列中的值,它们肯定是根据的间隔均匀分布的step.

timestamps <- ceiling(as.numeric((timestamps-epoch)*24*60/step))*step*60 + epoch
result[result$timestamp %in% timestamps, columnName] <- values
Run Code Online (Sandbox Code Playgroud)

当我的时间戳落在同一时间步时,这不起作用.这是一个例子:

> data.frame(ts=timestamps, v=values)
                   ts         v
1 2009-09-30 10:00:00 -2.081609
2 2009-09-30 10:04:18 -2.079778
3 2009-09-30 10:07:47 -2.113531
4 2009-09-30 10:09:01 -2.124716
5 2009-09-30 10:15:00 -2.102117
6 2009-09-30 10:27:56 -2.093542
7 2009-09-30 10:30:00 -2.092626
8 2009-09-30 10:45:00 -2.086339
9 2009-09-30 11:00:00 -2.080144
> data.frame(ts=ceiling(as.numeric((timestamps-epoch)*24*60/step))*step*60+epoch,
+ v=values)
                   ts         v
1 2009-09-30 10:00:00 -2.081609
2 2009-09-30 10:15:00 -2.079778
3 2009-09-30 10:15:00 -2.113531
4 …
Run Code Online (Sandbox Code Playgroud)

r

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

在向量内传播数据

我正在学习R,我很好奇......我需要一个能够做到这一点的功能:

> fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4))
[1] 1 1 1 2 3 3 4
> fillInTheBlanks(c(1, 2, 3, 4))
[1] 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我制作了这个......但我怀疑还有更多的R方法可以做到这一点.

fillInTheBlanks <- function(v) {
  ## replace each NA with the latest preceding available value

  orig <- v
  result <- v
  for(i in 1:length(v)) {
    value <- v[i]
    if (!is.na(value))
      result[i:length(v)] <- value
  }
  return(result)
}
Run Code Online (Sandbox Code Playgroud)

r vector

10
推荐指数
2
解决办法
1828
查看次数

如何在列表中循环并访问名称和属性?

我正在将函数应用于列表的元素.

列表有names,所以在某种意义上每个元素都有自己的名称,但是一旦lapply函数已经从列表中提取/分离了元素,我该如何访问它?

一些虚拟数据(作为内部函数,我在这里滥用dput):

r <- list(a=structure(1:4, unit="test"), b='abc')
lapply(r, dput)
Run Code Online (Sandbox Code Playgroud)

我在这里观察到的是dput接收列表中的对象,就好像被访问一样[[,被剥夺了它们在包含列表中的名称.

所以我想我会放弃使用来自该apply族的函数并编写一个循环的想法,但我并不特别喜欢这个想法,它迫使我构造完整函数的结果.

result <- list()
for (name in names(r)) {
  print(name)
  result[[name]] <- dput(r[[name]])
}
result
Run Code Online (Sandbox Code Playgroud)

任何有见地的想法?

r

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

理解R中的日期/时间(POSIXc和POSIXct)

我正在读表,它包含描述时间戳的字符串.我只想将字符串转换为内置日期时间类型...

R> Q <- read.table(textConnection('
               tsstring
1 "2009-09-30 10:00:00"
2 "2009-09-30 10:15:00"
3 "2009-09-30 10:35:00"
4 "2009-09-30 10:45:00"
5 "2009-09-30 11:00:00"
'), as.is=TRUE, header=TRUE)
R> ts <- strptime(Q$tsstring, "%Y-%m-%d %H:%M:%S", tz="UTC")
Run Code Online (Sandbox Code Playgroud)

如果我尝试将datetime列存储到data.frame中,我会收到一个奇怪的错误:

R> Q$ts <- ts
Error in `$<-.data.frame`(`*tmp*`, "ts", value = list(sec = c(0, 0, 0,  : 
  replacement has 9 rows, data has 5
Run Code Online (Sandbox Code Playgroud)

但如果我通过data.frame中的数字表示,它可以工作......

R> EPOCH <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%S", tz="UTC")
R> Q$minutes <- as.numeric(difftime(ts, EPOCH, tz="UTC"), units="mins")
R> Q$ts <- EPOCH + 60*Q$minutes
Run Code Online (Sandbox Code Playgroud)

了解情况有什么帮助?

datetime r posixct

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

如何记录R参考类?

如何记录引用类的成员函数的使用?

如果我Rd用一个\usage块写一个文件,我该如何避免WARNING

Functions/methods with usage in documentation object 'XmlDoc' but not in code:
  $ new
Run Code Online (Sandbox Code Playgroud)

我希望这个\usage块允许我写下这样的东西:

obj <- ClassName$new(par1, par2, ...)
obj$method1(oth1, ...)
Run Code Online (Sandbox Code Playgroud)

然后我会记录\arguments块中的参数.

如果我这样做,R CMD check抱怨

Assignments in \usage in documentation object 'ClassName':
Run Code Online (Sandbox Code Playgroud)

并且不会将方法识别为我需要文档的代码对象.

截至目前,我正在编写Rd没有\usage块的文件,并在块中编写上面的代码\examples,但是我没有地方记录参数,这种方式check实际上很少检查.由于我对此不满意,我现在向社区询问当前的常见做法.

documentation r rd reference-class

6
推荐指数
2
解决办法
1475
查看次数

使用 SQLAlchemy 创建金字塔会话时出现 DetachedInstanceError

我编写了自己的PyramidISession 接口实现,它将会话存储在数据库中。一切都工作得很好,但不知怎的却pyramid_tm出现了问题。一旦激活它就会这样说:

DetachedInstanceError: Instance <Session at 0x38036d0> is not bound to a Session;
attribute refresh operation cannot proceed
Run Code Online (Sandbox Code Playgroud)

(这里不要混淆:这<Session ...>是模型的类名,“... to a Session”很可能指的是 SQLAlchemy 的 Session(我称之为DBSession以避免混淆)。

我查看了邮件列表,似乎每当有人遇到问题时,他们都会

  • 产生一个新线程或
  • 手动调用transaction.commit()

这两件事我都不做。然而,这里的特点是,我的会话经常被金字塔传递。首先我这样做DBSession.add(session),然后return session。之后我可以处理会话、闪现新消息等。

但是,似乎一旦请求完成,我就会收到此异常。这是完整的回溯:

Traceback (most recent call last):
  File "/home/javex/data/Arbeit/libraries/python/web_projects/pyramid/lib/python2.7/site-packages/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 329, in service
    task.service()
  File "/home/javex/data/Arbeit/libraries/python/web_projects/pyramid/lib/python2.7/site-packages/waitress-0.8.1-py2.7.egg/waitress/task.py", line 173, in service
    self.execute()
  File "/home/javex/data/Arbeit/libraries/python/web_projects/pyramid/lib/python2.7/site-packages/waitress-0.8.1-py2.7.egg/waitress/task.py", line 380, in execute
    app_iter = self.channel.server.application(env, start_response)
  File "/home/javex/data/Arbeit/libraries/python/web_projects/pyramid/lib/python2.7/site-packages/pyramid/router.py", line 251, in __call__ …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy zope pyramid

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

所有可能的数字表达

一个完全无用的问题:我买了一个数字游戏,它是由两个黑色骰子和5个彩色骰子组成的.两个黑色数字形成一个2位数字,范围从11到66,其他5个是您可以使用的数字,将它们与所有可能的数字表达式组合在一起,以获得目标数字.

例如,黑色40 + 2:目标42

彩色5 3 6 2 4,你可以通过5 3 + 6*4 2 +获得目标 - (使用RPN因为它避免了括号).

现在我想在我们玩游戏的时候用我的掌上电脑找到最好的答案.

我必须说我对解决方案并没有太多考虑,我只是寻找关于查找参数排列的部分,但是接下来如何从中生成可能的表达式?我会使用RPN并枚举表达式的所有可能的"形状",然后用+ - */填充空白.

我不认识枚举表达式形状的问题.

输出将是:..... xxxx .... x.xxx ... x..xxx .. x ... xxx .... xx.xx ... xxxx ..x..x .xx ... xx..xx ..xx.xx .... xxx.x ... x.xx.x ..x..xx.x ... xx.xx ..xxxx

例如:.. xx ... xx ... xxx..x ..x.xx..x ..x.xx..x无效,因为第二个或第三个运算符会找到一个操作数.

我可以使用硬编码列表,但它看起来真的很难看!

python combinatorics catalan

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