小编Mai*_*ura的帖子

优雅的方法来检查丢失的包并安装它们?

这些天我似乎与共同作者分享了很多代码.他们中的许多人都是初级/中级R用户,并没有意识到他们必须安装他们尚未拥有的软件包.

是否有一种优雅的方式来调用installed.packages(),将其与我正在加载的那些进行比较并在安装时如果丢失?

packages r r-faq

307
推荐指数
17
解决办法
12万
查看次数

如何在data.table中按名称删除列?

为了摆脱a中名为"foo"的列data.frame,我可以这样做:

df <- df[-grep('foo', colnames(df))]

但是,一旦df转换为data.table对象,就无法删除列.

例:

df <- data.frame(id = 1:100, foo = rnorm(100))
df2 <- df[-grep('foo', colnames(df))] # works
df3 <- data.table(df)
df3[-grep('foo', colnames(df3))] 
Run Code Online (Sandbox Code Playgroud)

但是一旦它被转换为一个data.table对象,这就不再适用了.

r data.table

182
推荐指数
4
解决办法
14万
查看次数

有没有办法让R在手写结束时发出嘟嘟声/播放声音?

当我运行R脚本时,我会在另一个桌面上执行其他操作.如果我不经常检查,我永远不知道什么时候完成.有没有办法调用蜂鸣声(如系统蜂鸣声)或让R播放声音或通过脚本末尾的某些代码通知咆哮?

r

133
推荐指数
15
解决办法
3万
查看次数

如何动态命名变量?

是否可以动态创建新的变量名称?

我想将列表中的数据帧读入最后带数字的新变量.像orca1,orca2,orca3 ......

如果我尝试类似的东西

paste("orca",i,sep="")=list_name[[i]]
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?

r assign r-faq

89
推荐指数
4
解决办法
9万
查看次数

如何使用grid.arrange排列变量列表?

library(ggplot2)
df <- data.frame(x=1:10, y=rnorm(10))
p1 <- ggplot(df, aes(x,y)) + geom_point()
plist <- list(p1,p1,p1,p1,p1)
# In my real example,a plot function will fit a ggplot to a list of datasets 
#and return a list of ggplots like the example above.
Run Code Online (Sandbox Code Playgroud)

我想使用安排地块grid.arrange()gridExtra.

如果图中的数量plist是可变的,我该怎么做?

这有效: grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]])

但我需要一个更通用的解决方案.想法?

r ggplot2

78
推荐指数
4
解决办法
3万
查看次数

从数据文件中删除非ASCII字符

我有一堆csv文件,我正在读入R并包含在一个包/数据文件夹 .rdata格式中.不幸的是,数据中的非ASCII字符未通过检查.该tools软件包有两个功能来检查非ASCII字符(showNonASCIIshowNonASCIIfile),但我似乎无法找到一个删除/清除它们.

在我探索其他UNIX工具之前,在R中执行此操作会很棒,因此我可以维护从原始数据到最终产品的完整工作流程.是否有任何现有的软件包/函数可以帮助我摆脱非ASCII字符?

unicode ascii r non-ascii-characters

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

有没有办法跟踪mclapply的进度?

我爱的设置.progress = 'text'plyr's llply.但是,由于列表项被发送到各个核心,然后在最后进行整理,因此我不得不知道沿着mclapply(从包中multicore)走多远.

我一直在输出消息,*currently in sim_id # ....*但这并不是很有帮助,因为它没有给我一个指示列表项的完成百分比的指示(虽然知道我的脚本没有卡住并移动是有帮助的).

有人可以建议其他想法,让我看看我的.Rout文件,并获得进步感吗?我已经考虑过添加一个手动计数器但是看不清楚我将如何实现它,因为mclapply必须先完成所有列表项的处理才能给出任何反馈.

r progress-bar mclapply

40
推荐指数
5
解决办法
8570
查看次数

一次加载多个文件?

所以假设我有一个带有一堆.rdata文件的目录

file_names=as.list(dir(pattern="stock_*"))

[[1]]
[1] "stock_1.rdata"

[[2]]
[1] "stock_2.rdata"
Run Code Online (Sandbox Code Playgroud)

现在,如何通过一次调用加载这些文件?

我总是这样做:

for(i in 1:length(file_names)) load(file_names[[i]]) 
Run Code Online (Sandbox Code Playgroud)

但为什么我不能这样做do.call(load, file_names)?我想,没有一个适用的功能会工作,因为他们大多会回到名单,但没有要回来,只是这些文件需要被加载.我无法让这个get功能在这种情况下工作.想法?

r

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

在新版本的软件包中重命名函数时,是否有最佳/推荐的做法?

我正在更新一个旧包并缩短了一堆很长的函数名.如何让用户知道旧函数已被弃用?我记录了所有内容roxygen2所以我想知道#' @alias我应该使用什么?思考?

r roxygen

37
推荐指数
3
解决办法
2017
查看次数

如何使用dplyr复制使用自定义函数的ddply行为?

我正试图用我的所有plyr电话来取代dplyr.还有一些障碍,其中一个是group_by功能.我想它的行为方式与第二个ddply参数相同,并根据我列出的分组变量进行拆分,应用和组合.但事实似乎并非如此.这是一个相当简单的例子.

让我们定义一个愚蠢的功能

mm <- function(x) return(x[1:5, ])
Run Code Online (Sandbox Code Playgroud)

现在我们可以iris像这样分割数据集中的物种并将此函数应用于每个部分.

ddply(iris, .(Species), mm)
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是,当我尝试相同时dplyr,它不能按预期工作.

iris %>% group_by(Species) %>% mm
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r dplyr

34
推荐指数
1
解决办法
8166
查看次数