小编Jon*_*den的帖子

将函数应用于除当前行之外的所有行 (dplyr)

dplyr到目前为止,我正在学习R 包并且非常喜欢它。我需要做的一件事是创建一个新列,其每一行的值是将函数应用于除当前行以外的所有行(可能按组划分)的结果,但我想不出一种简洁的方法.

一个人为的例子是

library(datasets)
library(dplyr)

data(mtcars)
x <- mtcars %>% mutate(name=rownames(mtcars)) %>% filter(cyl==4) %>% select(name,cyl,mpg)

# This is what I want to do more elegantly
x$othermpg <- NA
for (i in 1:nrow(x))
    x$othermpg[i] <- mean(x$mpg[-i])
Run Code Online (Sandbox Code Playgroud)

此处,该othermpg列获取mpg除当前行中的汽车之外的所有汽车的平均值。

请问有人可以帮忙吗?

r dplyr

7
推荐指数
1
解决办法
1646
查看次数

R:从已编译代码中的现有连接读取

我希望能够从任意R连接(在某种意义上?connections)中读取,该连接将由用户传递给R函数,然后通过传递到某些C代码.Call.

文件中的R API R_ext/Connections.h指定了一个函数,R_ReadConnection它将一个指向Rconn结构的指针作为它的第一个参数,然后执行我想要的操作.结构本身也在该标头中定义,但除了getConnection(C函数)之外,我看不到检索该类型结构的方法,它不是API的一部分.据我所知,与连接关联的外部指针也不直接指向结构.

那么,有谁能告诉我是否有一种支持的方法将一个合适的转换SEXP为指向相关Rconn结构的指针?

提前致谢.

api connection r

7
推荐指数
1
解决办法
263
查看次数

在 R 包中记录重新导出的函数

我正在将我的一个 R 包拆分为两个,因为它合并了两个逻辑上不同的功能集,其中一个比另一个更通用。但是,由于原始软件包相当受欢迎,并且至少依赖于另一个软件包,因此我不想破坏兼容性。

R 的命名空间系统提供了一种处理此问题的方法,即现在在分离的包(即RNifti)中导入函数,然后从下游包(即RNiftyReg)中重新导出它们。这样,第三方用户和包可以只加载RNiftyReg,并且仍然可以看到现在实际属于RNifti. 此外,这些函数的文档仍然有效,因为RNifti命名空间与RNiftyReg.

但是,R CMD check抱怨,因为重新导出的功能没有记录在RNiftyReg.

所以我的问题是:这种情况下的最佳实践什么?

我似乎有三个选择,但没有一个非常有吸引力。

  • 通过要求新包 ,RNiftiRNiftyReg所有以前可用的函数一起加载来破坏现有代码。显然这是不可取的。
  • 复制下游包中这些函数的所有文档,RNiftyReg. 这应该让每个人都高兴,但维护起来很麻烦,如果软件包不总是一起更新,很容易失去同步。
  • 为 中的所有这些函数提供一个单一的全能文档页面RNiftyReg,指向 中的完整文档RNifti。但这仍然需要与函数参数保持同步,并且需要用户使用笨拙的?RNifti::somefun语法来查看“真实”文档。

有没有办法解决这个问题,或者像这样重新导出代码是不明智的?

documentation namespaces r

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

标签 统计

r ×3

api ×1

connection ×1

documentation ×1

dplyr ×1

namespaces ×1