小编Mai*_*ura的帖子

为缺少时间步骤添加行的最快方法?

我的数据集中有一列,其中时间段(Time)是从ab开始的整数.有时,任何特定组都可能缺少时间段.我想用这些行填写NA.以下是1(几千个)组的示例数据.

structure(list(Id = c(1, 1, 1, 1), Time = c(1, 2, 4, 5), Value = c(0.568780482159894, 
-0.7207749516298, 1.24258192959273, 0.682123081696789)), .Names = c("Id", 
"Time", "Value"), row.names = c(NA, 4L), class = "data.frame")


  Id Time      Value
1  1    1  0.5687805
2  1    2 -0.7207750
3  1    4  1.2425819
4  1    5  0.6821231
Run Code Online (Sandbox Code Playgroud)

如您所见,时间3缺失.通常一个或多个可能会丢失.我可以自己解决这个问题,但恐怕我不会以最有效的方式做到这一点.我的方法是创建一个函数:

生成时间段从序min(Time)max(Time)

然后做一个setdiff抓取缺失的Time值.

将该向量转换为a data.frame

拉出唯一标识符变量(Id以及上面未列出的其他变量),并将其添加到此data.frame中.

合并两者.

从功能返回.

因此整个过程将按如下方式执行:

   # Split the data into individual data.frames by …
Run Code Online (Sandbox Code Playgroud)

r plyr dataframe data.table

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

如何在data.table上运行apply?

我有一个第data.table2列到第20列作为带空格的字符串(例如,"物种名称").我想str_replace()同时在所有这些列上运行,因此所有"Species Name"都变为"Species_Name".我可以这样做:

data.table(apply(as.data.frame(dt[,2:dim(dt)[2], with=F]), 2, 
                               function(x){ str_replace(x," ","_") }))
Run Code Online (Sandbox Code Playgroud)

或者如果我把它作为一个data.table对象,那么我可以一次一行:

dt[,SpeciesName := str_replace(SpeciesName, " ", "_")
Run Code Online (Sandbox Code Playgroud)

我如何对所有列2到最后类似于上面的那个?

r apply data.table

32
推荐指数
2
解决办法
3万
查看次数

如何在包裹检查期间有效处理未压缩的保存?

在最近开发包的努力中,我将数据集包含在data/我的包的文件夹中.在我的具体情况下,我有5个数据集,所有这些数据集都是data.table格式化的(尽管如果我保留它们,下面描述的问题仍然存在data.frame).我已将每个.rda文件保存为单个文件并进行适当记录.

当我check()从包运行时devtools,我收到以下警告:

 checking data for ASCII and uncompressed saves ... WARNING
  Warning: large data file(s) saved inefficiently:
          size ASCII compress
  data1.rda 129Kb  TRUE     gzip
  data2.rda 101Kb  TRUE     gzip
  data3.rda 1.6Mb  TRUE     gzip

  Note: significantly better compression could be obtained
        by using R CMD build --resave-data
              old_size new_size compress
  data1.rda         129Kb     34Kb       xz
  data2.rda         101Kb     20Kb       xz
  data4.rda          92Kb     35Kb       xz
  data3.rda         1.6Mb    116Kb       xz
  species.rda     12Kb      9Kb       xz …
Run Code Online (Sandbox Code Playgroud)

r package-development

30
推荐指数
1
解决办法
1963
查看次数

我在R的哪个地方永久存储我的自定义功能?

我有几个自定义函数,我经常在R中使用.而不是在每个脚本中使用这个文件(或其中的部分),是否有一些方法可以将它添加到基本R文件中,这样当我使用R时它们总是可用的?

r

29
推荐指数
3
解决办法
8501
查看次数

通过HTTPS获取R脚本

有没有办法从网上获取R脚本?

例如 source('http://github.com/project/R/file.r')

原因:我目前有一个项目,我想提供使用但尚未准备好进行打包.因此,给人们一个单一的文件来源于网络(然后将来源所有单独的功能文件)会很棒.

仔细观察,问题似乎是https.我该如何获取此文件?

https://raw.github.com/hadley/stringr/master/R/c.r
Run Code Online (Sandbox Code Playgroud)

r

26
推荐指数
3
解决办法
2万
查看次数

可以在没有聚合函数的情况下使用dcast吗?

可能重复:
这个R重塑应该很简单,但是

dcast来自reshape2没有公式的作品,没有重复.以这些示例数据为例:

df <- structure(list(id = c("A", "B", "C", "A", "B", "C"), cat = c("SS", 
"SS", "SS", "SV", "SV", "SV"), val = c(220L, 222L, 223L, 224L, 
225L, 2206L)), .Names = c("id", "cat", "val"), class = "data.frame", row.names = c(NA, 
-6L))
Run Code Online (Sandbox Code Playgroud)

我想要dcast这些数据,只是将值列表,而不对value.var包含默认值的任何函数应用length.

在这种情况下,它工作正常.

> dcast(df, id~cat, value.var="val")
  id  SS   SV
1  A 220  224
2  B 222  225
3  C 223 2206
Run Code Online (Sandbox Code Playgroud)

但是当存在重复变量时,fun默认值为length.有没有办法避免它?

df2 <- structure(list(id = …
Run Code Online (Sandbox Code Playgroud)

r reshape2

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

如何让R利用高内存,高CPU服务器?

所以我终于想出了如何让我的R脚本在Amazon EC2云上运行.我一直在使用带有26个ECU,8个内核和69个内存的AMI.

然后我把我的代码转换成多个脚本,并运行每一个在河的一个实例与此大小的服务器,我可以轻松地同时运行20-40脚本,每个正在运行的几个1000个模拟.

我想知道的是,R是否正在本地利用所有这些计算能力.我应该安装专门告诉R使用所有这些额外内存/多CPU的软件包吗?我已经看过这个页面和一些软件包(至少从描述中看来)看起来很有希望.但我无法弄清楚如何将其合并到我的代码中.任何人都可以对此有所了解吗?

cloud resources r amazon-web-services

22
推荐指数
2
解决办法
1460
查看次数

如何从列表中删除空数据帧?

我有几十个列表,每个列表都是11个数据帧的集合.有些数据框是空的(另一个脚本没有输出任何数据,不是错误).

我需要通过一个函数推送每个列表,但是当它看到一个空数据帧时会扼流.那么我该如何编写一个列表的函数,对每个元素(即数据帧)进行调暗,如果为0,则跳到下一个.

我试过这样的事情:

empties <- function (mlist)
{
 for(i in 1:length(mlist))
   {
    if(dim(mlist[[i]])[1]!=0) return (mlist[[i]])
    }
}
Run Code Online (Sandbox Code Playgroud)

但显然,这不起作用.我会在这一点上手动完成,但这需要永远.救命?

r

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

如何保持ggplot2的透明度?

我喜欢ggplot产生的情节.然而,直接获得出版质量图仍然有些麻烦.我通常不得不在Illustrator中进行一些后期处理(即更改字体,编号等).虽然我可以保存为tiff或png,但eps最适合在Illustrator中操作数字(我可以取消组合对象,移动图例/文本等).

当我保存一个具有一定透明度的ggplot对象(以点或更平滑)时,我收到此错误:

Warning message:
In grid.Call.graphics("L_points", x$x, x$y, x$pch, x$size) :
  semi-transparency is not supported on this device: reported only once per page
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?

r

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

如何将图像叠加到ggplot上?

我想从网上阅读一张图片.例如

http://api.altmetric.com/donut/502878_64x64.png

并将其插入a的右上角 ggplot

df <- data.frame(x=1:10, y=sample(1:100,10))
# a fake plot to try it on.
ggplot(df, aes(x,y)) + geom_point(size = 2)
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

png r ggplot2

15
推荐指数
2
解决办法
6252
查看次数