R有一个方便的跨平台tar()函数,可以tar和gzip文件.看来这个函数是为了整个目录而设计的.我希望使用此函数来tar和压缩目录的子集或单个文件.但是,我似乎无法做到这一点.我期待以下内容在当前工作目录中查找单个csv文件:
tar( "tst.tgz", "myCsv.csv", compression="gzip" )
Run Code Online (Sandbox Code Playgroud)
那么只能在目录上使用tar()函数吗?
我暂时通过创建一个临时目录,复制我的文件,然后整个临时目录来解决这个问题.但我希望有一个更简单的解决方案.这不需要复制文件,这对于大文件来说有些耗时.
我导入的数据描述了在不同位置进行的数值测量,以获得或多或少均匀分布的时间戳.有时这种"均匀分布"并不是真的,我必须丢弃一些值,只要每个位置的每个时间戳都有一个值,那么哪个值并不重要.
我对数据做了什么?我将它添加到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,我很好奇......我需要一个能够做到这一点的功能:
> 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) 我正在将函数应用于列表的元素.
列表有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> 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)
了解情况有什么帮助?
如何记录引用类的成员函数的使用?
如果我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实际上很少检查.由于我对此不满意,我现在向社区询问当前的常见做法.
我编写了自己的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) 一个完全无用的问题:我买了一个数字游戏,它是由两个黑色骰子和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无效,因为第二个或第三个运算符会找到一个操作数.
我可以使用硬编码列表,但它看起来真的很难看!