我的数据集中有一列,其中时间段(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) 我有一个第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到最后类似于上面的那个?
在最近开发包的努力中,我将数据集包含在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中使用.而不是在每个脚本中使用这个文件(或其中的部分),是否有一些方法可以将它添加到基本R文件中,这样当我使用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重塑应该很简单,但是
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) 我有几十个列表,每个列表都是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)
但显然,这不起作用.我会在这一点上手动完成,但这需要永远.救命?
我喜欢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)
有解决方法吗?
我想从网上阅读一张图片.例如
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)
我该怎么做?