我使用如下命令在我的计算机(Mac OS X)上创建了一堆zip文件:
zip -r bigdirectory.zip bigdirectory
Run Code Online (Sandbox Code Playgroud)
然后,我将这些zip文件保存在某处并删除了原始目录.
现在,当我尝试解压缩zip文件时,我遇到了这样的错误:
$ unzip -l bigdirectory.zip
Archive: bigdirectory.zip
warning [bigdirectory.zip]: 5162376229 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [bigdirectory.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
Run Code Online (Sandbox Code Playgroud)
我发现这可能是因为zip无法处理超过一定大小的文件,也许是4演出.至少我在某处读过.
但为什么zip命令会让我创建这些文件?有问题的zip文件是9457464293字节,它让我更像这样,绝对没有错误.
很明显它可以创建这些文件.
我真的希望我的档案不会丢失.我已经吸取了教训,将来我会在删除原始文件之前检查我的档案,并且我可能还会使用其他文件格式,如tar/gzip.
但就目前而言,我该怎么办?我真的需要我的文件.
有些人建议我的unzip工具不支持足够大的文件(这很奇怪,因为我使用了内置的OS X zip和unzip).无论如何,我安装了一个新unzip的homebrew,并且看,我现在得到一个不同的错误:
$ …Run Code Online (Sandbox Code Playgroud) time1 = as.POSIXlt("2010-07-01 16:00:00", tz="Europe/London")
time1
# [1] "2010-07-01 16:00:00 Europe/London"
Run Code Online (Sandbox Code Playgroud)
但
time2 = as.POSIXct("2010-07-01 16:00:00", tz="Europe/London")
time2
# [1] "2010-07-01 16:00:00 BST"
Run Code Online (Sandbox Code Playgroud)
为什么时区呈现不同?这对我很重要,因为我需要从我的约会时间中提取时区.
base::format(time1, format="%Z")
# [1] "BST"
base::format(time2, format="%Z")
# [1] "BST"
Run Code Online (Sandbox Code Playgroud)
英国拯救时间都给予同样的"BST"!
问题是"BST"不会被POSIXct/POSIXlt格式识别:
as.POSIXlt("2010-07-01 16:00:00", tz="BST")
# [1] "2010-07-01 16:00:00 BST"
# Warning messages:
# 1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
# unknown timezone 'BST'
# 2: In structure(xx, class = c("POSIXct", "POSIXt"), tzone = tz) :
# unknown timezone 'BST'
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个新的向量,它是35个其他向量的总和.问题是有很多NA值,但对于这种特殊用途,我想将它们视为零.添加向量将不起作用,因为如果35个向量中的任何一个包含NA,则结果为NA.以下是问题的示例:
col1<-c(NA,1,2,3)
col2<-c(1,2,3,NA)
col3<-c(NA,NA,2,3)
Sum<-col1+col2+col3
Sum
# [1] NA NA 7 NA
Run Code Online (Sandbox Code Playgroud)
我希望结果为
1,3,7,6 .我想我可以创建每个向量的新版本,其中我用0替换NA,但是当应用于35个向量时,这将是很多工作.有一个简单的功能可以帮助我吗?
我当然知道data.table对象的主要目的是允许快速子集化/分组等,并且拥有一个大的data.table子集(非常有效)比拥有许多(可能很小的)data.table对象更有意义.
话虽这么说,我最近创建了一个实例化大量data.table对象的脚本,我注意到随着内存数量的增加,性能会下降data.table's.
这是我的意思的一个例子:
n <- 10000
# create a list containing 10k data.frame's
system.time(lotsofDFs <- lapply(1:n,FUN=function(i){ data.frame(A=1:10,B=1:10,ID=i)}),gcFirst=T)
# user system elapsed
# 2.24 0.00 2.23
# create a list containing 10k data.table's
system.time(lotsofDTs <- lapply(1:n,FUN=function(i){ data.table(A=1:10,B=1:10,ID=i)}),gcFirst=T)
# user system elapsed
# 5.49 0.01 5.53
n <- 80000
# create a list containing 80k data.frame's
system.time(lotsofDFs <- lapply(1:n,FUN=function(i){ data.frame(A=1:10,B=1:10,ID=i)}),gcFirst=T)
# user system elapsed
# 19.42 0.01 19.53
# create a list …Run Code Online (Sandbox Code Playgroud) 我正在操作一些POSIXltDateTime对象.例如,我想添加一个小时:
my.lt = as.POSIXlt("2010-01-09 22:00:00")
new.lt = my.lt + 3600
new.lt
# [1] "2010-01-09 23:00:00 EST"
class(new.lt)
# [1] "POSIXct" "POSIXt"
Run Code Online (Sandbox Code Playgroud)
事情是我想new.lt成为一个POSIXlt对象.我知道我可以用as.POSIXlt它来转换回来POSIXlt,但有没有更优雅和有效的方法来实现这一目标?
出于某种原因,我突然无法在R中安装软件包(我随后更新到最新版本的R并运行Windows 7).例如,如果我输入:
install.packages('beeswarm')
Run Code Online (Sandbox Code Playgroud)
将软件包安装到'D:/ Rlibs'(未指定'lib')---请选择一个CRAN镜像用于此会话---尝试URL'http://www.stats.bris.ac.uk/ R/bin/windows/contrib/3.0/beeswarm_0.1.5.zip '内容类型'text/html'长度未知打开的URL已下载1859字节
read.dcf中出错(file.path(pkgname,"DESCRIPTION"),c("Package","Type")):无法打开连接另外:警告消息:1:解压缩(zipname,exdir = dest) :从zip文件2中提取错误1:在read.dcf(file.path(pkgname,"DESCRIPTION"),c("Package","Type")):无法打开压缩文件'beeswarm/DESCRIPTION',可能的原因'没有相应的文件和目录'
我已经读过在Windows 7中对写入某些文件夹等的权限可能存在重要限制.所以我已经花了一些时间在我的计算机的非默认区域安装R和库文件夹,并允许自己拥有权利某些文件夹,但无济于事.当我输入时,可能也很重要:
.libPaths()
# [1] "D:/Rlibs"
# [2] "C:/Users/L.Halsey/Documents/R/win-library/3.0"
# [3] "C:/Users/L.Halsey/Documents/Documents/R-3.0.1/library"
Run Code Online (Sandbox Code Playgroud)
我创建了几个文件夹,试图创建一个我可以成功安装库并将其设置为R使用"开始"按钮中的"环境变量"进行识别的文件夹.我不知道如何删除它们中的任何一个 - 不确定这是否与我现在因某些原因无法安装/更新软件包的整体问题相关.
我是R的新手,但我有兴趣使用Shiny来创建使用存储在SQL Server数据库中的数据的动态图表.为了实现交互性,我想从数据库中引入原始数据并在其中执行计算,R而不是让数据库汇总数据.
我能够使用RODBC,连接到数据库,执行查询,并在a中接收结果data.frame.但是,读取时间R比SQL Server Management Studio(SSMS)中执行的相同查询长约12倍.SSMS需要大约600毫秒,而R大约需要7.6秒.我的问题是我是做错了什么,还是R因为数据库访问速度很慢?如果是这样,是否有更快的替代方案(例如将数据库输出写入文件并读取文件)?
有关可能有用的查询的一些信息:查询检索大约250K行,包含4列.第一列是日期,其他三列是数值.机器运行R和SSMS是一个高端的Win 7工作站,具有32GB的内存.R我正在运行的命令是:
system.time(df <- sqlQuery(cn, query))
Run Code Online (Sandbox Code Playgroud)
返回:
user system elapsed
7.17 0.01 7.58
Run Code Online (Sandbox Code Playgroud)
有趣的是,似乎从SQL到我的机器的数据传输速度很快,但是R在返回之前,这是忙于内部工作几秒钟data.frame.我看到这一点,因为网络利用率在第一秒激增并几乎立即返回到接近0.然后几秒钟后,R data.frame返回.
我正在尝试将一些软件包移植到离线(Windows)计算机上的R安装中.
从CRAN(比方说data.table),过程:1)在单独的在线计算机上下载.zip 2)拇指驱动器 - >离线计算机3)通过install.packages("....zip"...)完全按预期工作安装.
但是,当我尝试从GitHub安装时,此过程中断了.
当我运行install.packages(注:我使用的是type="binary"和repos=NULL; type="win.binary"不执行任何操作要么)上的zip文件(通过转到页包,如获得https://github.com/Rdatatable/data.table,并使用"下载.拉链"功能",出了点问题.
没有错误消息(并且没有任何新设置verbose=TRUE),并且包文件夹被添加到我的库中(即,当我在那里导航时,我可以看到名为"data.table-master"的文件夹),但是library(data.table)导致错误:没有包名为data.table".我还注意到,虽然CRAN的安装完成了"包data.table成功解压缩并检查MD5总和",但我没有从尝试的GitHub安装中得到这样的消息.
这里发生了什么?我尝试了所有可能的潜在客户?install.packages,但鉴于我并没有真正收到错误消息,因此很难确定究竟是什么问题.
更多背景:R版本是3.2.0.很难复制粘贴,sessionInfo因为该计算机不在线,不确定还有什么可能相关.
鉴于@下面r2evans的意见,我也尝试使用type="source"带install.packages,而这并没有工作,要么(同样的问题-尽管有我的一个'data.table主’文件夹.libPaths()的地址,library(data.table)给出了有没有这样的包错误) .
不过,我确实从使用verbose=TRUE这个时间获得了更多的输出:
system(cmd0):
C:/PROGRA~1/R/R-32~1.0/bin/x64/R CMD INSTALL1):成功了
'C:/PROGRA~1/R/R-32~1.0/bin/x64/R CMD INSTALL -l "C:\Users\Mike\Documents\R\win-library\3.2" "E:/data.table-master.zip"'
有点莫名其妙,length参数in arrows以英寸(从?arrows)为单位:
length箭头边缘的长度(以英寸为单位).
R源甚至可以明确地指出这个测量在评论中以英寸为单位,突出了这种设计的特殊性.
这意味着箭头的相对大小取决于dev.size().目前尚不清楚如何将英寸转换为轴单位(首先是无限更有用).这是一个简化版本:
h = c(1, 2, 3)
xs = barplot(h, space = 0, ylim = c(0, 4))
arrows(xs, h - .5, xs, h + .5,
length = .5*mean(diff(xs)))
Run Code Online (Sandbox Code Playgroud)
显示方式取决于设备.例如,这是该设备上的输出:
png('test.png', width = 5, height = 5)
Run Code Online (Sandbox Code Playgroud)
这是另一个:
png('test.png', width = 8, height = 8)
Run Code Online (Sandbox Code Playgroud)
这看起来有点视错觉,但两个图中的箭头宽度确实相同.如何控制这个以便两个图(传达相同的数据)显示相同?更具体地说,我如何确保箭头的宽度正好为 .5个单位?
为了简化,我有一个数据集如下:
b <- 1:6
# > b
# [1] 1 2 3 4 5 6
jnk <- c(2, 4, 5, NA, 7, 9)
# > jnk
# [1] 2 4 5 NA 7 9
Run Code Online (Sandbox Code Playgroud)
当我尝试:
cor(b, jnk, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
我明白了:
> cor(b, jnk, na.rm=T)
Error in cor(b, jnk, na.rm = T) : unused argument (na.rm = T)
Run Code Online (Sandbox Code Playgroud)
我也试过na.action = na.exclude,等似乎没有用.知道问题是什么以及如何解决它真的很有帮助.谢谢.