我正在构建客户端到RESTful API.一些链接让我从服务器下载附件(文件),在最好的情况下,这些是.txt.我只提到RESTful部分,因为它意味着我必须发送一些标题和每个帖子的潜在正文 - 标准的R'文件名'= URL逻辑将不起作用.
有时人们将许多txts捆绑成拉链.这些都很尴尬,因为我不知道它们包含了什么,直到我下载了很多它们.
目前,我正在解包这些,解压缩文件(添加.gz扩展名)并重新上传它们.然后可以将它们编入索引并下载.
我正在使用Hadley的可爱httr包,但我看不到一种优雅的解压缩gz文件的方法.
使用read.csv或类似文件时,任何带有gz结尾的文件都会自动解压缩(方便!).使用httr或curl时的等价物是什么?
content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz"))
[1] 1f 8b 08 08 4e 9e 9b 51 00 03 73 ...
Run Code Online (Sandbox Code Playgroud)
看起来不错,一个带有正确标头的压缩字节流(1f 8b).现在我需要文本内容,所以我尝试使用memDecompress,它说应该这样做:
memDecompress(content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz")),type="gzip")
Error in memDecompress(content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz")), :
internal error -3 in memDecompress(2)
Run Code Online (Sandbox Code Playgroud)
这里有什么合适的解决方案?
另外,有没有办法让R拉出远程.zip文件的INDEX而不下载所有文件?
Swift XCTAssert()和assert()Swift有什么区别?
我有一个巨大的数据集,类似于下面发布的列
NameofEmployee <- c(x, y, z, a)
Region <- c("Pune", "Orissa", "Orisa", "Poone")
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在Region列中,"Pune"区域以两种不同的方式拼写 - 即"Pune"和"Poona".
同样,"奥里萨"拼写为"奥里萨"和"奥里萨".
我有多个区域实际上是相同的但是拼写方式不同.这会在分析数据时引起问题.
我想在R的帮助下自动获得这些不匹配拼写的列表.
我还想自动用正确的拼写替换拼写.
当用户点击超链接时,我打开一个下载文件的弹出窗口.下载后,显示打开/保存对话框.我想在下载完成后关闭弹出窗口(当提示用户保存文件时).我已经尝试过window.close方法,但它不起作用,因为上下文不是弹出窗口而是打开/保存对话框.
我的问题是如何从R中另一个函数调用的函数中提取变量的名称?
为了说明,这是一个例子:
a <- function(variable) {
print(deparse(substitute(variable)))
internala(substitute(variable))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
Run Code Online (Sandbox Code Playgroud)
调用该函数 a 会得到以下结果:
>a(whatever)
[1] "whatever"
[1] "substitute(variable)"
Run Code Online (Sandbox Code Playgroud)
这意味着我可以提取变量的名称whatever从a,但不能从internala.
有什么想法吗?
任何帮助将不胜感激!
玛丽亚
这是一个普遍的“可用技术”问题。
我公司为Web应用程序提供了RESTful API。但是,对于我的需求而言,它太慢了,并且某些结果的格式很尴尬。

我想用代理/适配器服务器包装他们的静态服务器,因此当您连接到代理时,您将获得RESTful API,希望真正的API 提供。

因此,它需要做一些事情:

例如:在记录中有一个字段请求:GET / records / id / field可能很慢,但是有一个指纹请求GET / records / id / fingerprint总是很快。如果存在用于指纹的GET / records / 1 / field2缓存feedbeef,那么feed beef在提供缓存的版本之前,我需要检查原始服务器是否仍具有指纹。
GET / records / id / attachments / 1234

以文本格式返回100Mb日志文件
从文件中删除空字符(可选)可以重新编码日志以过滤掉不相关的行,从而减少了客户端缓存过滤版本以供以后请求的负载。
尽管我可以修改客户端以实现此功能,但是这样的代码对于其他客户端(不同的语言)将不可重用,并且会使客户端逻辑变得复杂。
我看了一下clojure / ring是否可以做到这一点,尽管有一个不错的小代理中间件,但据我所知,它不能处理流媒体内容-必须下载整个100Mb。而且它还不包含任何缓存逻辑。
我看了一下鱿鱼是否可以做到,但是我对这项技术并不熟悉,它似乎主要涉及传递请求而不是即时修改请求。
我正在寻找可能在哪里找到实现此目标的正确技术的提示。如果学习新语言使我能够使用一种非常简单的方法来进行语言学习,那么我基本上与语言无关。
我经常有数据,我希望将一个变量级别的值与所有其他变量级别进行比较.每次我编写代码来执行此操作时,我希望它更容易.这是一个问题的例子:
假设我想将任何切割的钻石平均成本与最佳切割钻石的平均成本进行比较.为了公平起见,我想分别为每个清晰度做这件事.
让我们检查一下我们是否有足够的数据:
> with(diamonds,table(cut,clarity))
clarity
cut I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IF
Fair 210 466 408 261 170 69 17 9
Good 96 1081 1560 978 648 286 186 71
Very Good 84 2100 3240 2591 1775 1235 789 268
Premium 205 2949 3575 3357 1989 870 616 230
Ideal 146 2598 4282 5071 3589 2606 2047 1212
Run Code Online (Sandbox Code Playgroud)
好吧,没有想法中的零,所以让我们计算平均值.
> claritycut<-ddply(diamonds,.(clarity,cut),summarize,price=mean(price))
> claritycut
clarity cut price
1 I1 Fair 3703.533
2 I1 Good 3596.635
3 I1 Very …Run Code Online (Sandbox Code Playgroud) 我在 Suse Linux Enterprise 上运行我的 C 程序,它压缩了几千个大文件(大小在 10MB 到 100MB 之间),随着程序的运行,程序变得越来越慢(它在英特尔 Sandy Bridge 板上运行 32 个线程的多线程)。当程序完成并再次运行时,它仍然很慢。
当我观察程序运行时,我看到程序运行时内存正在耗尽,你会认为这只是一个典型的内存泄漏问题。但是,由于正常的 malloc()/free() 不匹配,我希望所有内存在程序终止时返回。但是,当程序完成时,大部分内存不会被回收。free 或 top 命令显示 Mem:总共 63996M,已使用 63724M,当程序减速停止时有 272M 空闲,但在终止后,空闲内存仅增长回约 3660M。当程序重新运行时,空闲内存很快就用完了。
顶部程序仅显示该程序在运行时最多使用了 4% 左右的内存。
我认为这可能是内存碎片问题,但是,我构建了一个小型测试程序来模拟程序中的所有内存分配活动(内置了许多随机方面 - 大小/数量),并且它始终返回所有内存完成。所以,我不认为是这样。
问题:
是否可能存在会永久丢失内存的 malloc()/free() 不匹配,即即使在进程完成之后?
C 程序(不是 C++)中还有哪些其他东西会导致永久性内存丢失,即在程序完成后,甚至终端窗口关闭?只有重新启动才能恢复内存。我已经阅读了其他关于文件未关闭导致问题的帖子,但是,我认为我没有这个问题。
查看 top 和 free 的内存统计数据是否有效,即它们是否准确地描述了内存情况?它们似乎确实与程序的缓慢相对应。
如果程序只显示4%的内存使用率,valgrind之类的会发现这个问题吗?
让我们检查以下perl代码
if ($a lt 0.00 or $a gt 100.000)
{
print "a must be between 0 and 100 \n";
exit 1
}
exit 0
Run Code Online (Sandbox Code Playgroud)
让我们说a等于5.上面的代码将以失败状态退出,因为a不在0到100之间.
只需简单地更换lt,并gt与他们所代表的实际经营者<,并>分别产生预期的结果.用以9开头的数字替换100也将产生预期结果.
为什么Perl的比较运算符告诉我5不在0到100之间?
我能够将其转换UIImage为ARGB CVPixelBuffer,但现在我正在尝试将其转换UIImage为灰度级缓冲区.我认为自从代码通过以来我已经拥有它,但coreML模型抱怨说:
"Error Domain = com.apple.CoreML Code = 1"图像不是预期的类型8-Gray,而是Unsupported(40)"
这是CGContext我到目前为止的灰度:
public func pixelBufferGray(width: Int, height: Int) -> CVPixelBuffer? {
var pixelBuffer : CVPixelBuffer?
let attributes = [kCVPixelBufferCGImageCompatibilityKey: kCFBooleanTrue, kCVPixelBufferCGBitmapContextCompatibilityKey: kCFBooleanTrue]
let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(width), Int(height), kCVPixelFormatType_8IndexedGray_WhiteIsZero, attributes as CFDictionary, &pixelBuffer)
guard status == kCVReturnSuccess, let imageBuffer = pixelBuffer else {
return nil
}
CVPixelBufferLockBaseAddress(imageBuffer, CVPixelBufferLockFlags(rawValue: 0))
let imageData = CVPixelBufferGetBaseAddress(imageBuffer)
guard let context = CGContext(data: imageData, width: Int(width), height:Int(height),
bitsPerComponent: 8, bytesPerRow: …Run Code Online (Sandbox Code Playgroud)