使用命名向量时
vec <- c(a = 1, b = 2)
Run Code Online (Sandbox Code Playgroud)
我经常发现自己vec$a在应该写的时候通过写错误vec["a"]或vec[["a"]]使用相应的名称(不带名称)访问相应的值。
我认为vec$a出现错误是违反直觉的,因为$通常会提取命名的事物。这种感觉甚至似乎得到了支持,例如在?Extract示例用法为的中x$name,这是否不完美地适合命名向量?
那让我开始思考是否可能使$运算符超负荷以处理命名向量。但是,我对R中的运算符重载不是很有经验,并且我了解(例如,从这里的答案)在重载基本运算符时应谨慎。
我的互连问题:有,为什么我不应该超载的原因$描述说我不理解?也就是说,在某种程度上,这不是R中的默认值吗?如果没有,我将如何明智地这样做?
我了解实际上,即使只是出于可移植性的原因,这可能不是一个好主意,但我仍然很好奇。
我有一个包含各种血液学值及其收集时间的数据框。这些值只能在特定时间收集,但偶尔会添加一个额外的值。我想删除在计划时间之外收集值的任何实例。
为了说明这个问题,这里有一些代码来创建我正在使用的数据框的一个非常简化的版本(加上一些示例时间表):
example <- tibble("Parameter" = c(rep("hgb", 3), rep("bili", 3), rep("LDH", 3)),
"Collection" = c(1, 3, 4, 1, 5, 6, 0, 4, 8))
hgb_sampling <- c(1, 4)
bili_sampling <- c(1, 5)
ldh_sampling <- c(0, 4)
Run Code Online (Sandbox Code Playgroud)
因此,我需要一种方法来根据 Parameter 列中的值有条件地应用过滤器。该解决方案需要适合 dyplr 管道并产生如下内容:
filtered <- tibble("Parameter" = c(rep("hemoglobin", 2), rep("bilirubin", 2), rep("LDH", 2)),
"Collection" = c(1, 4, 1, 5, 0, 4))
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几件事(它们都类似于下面的内容),但是“参数”的使用会使事情出错:
df <- example %>%
{if (Parameter == "hgb") filter(., Collection %in% hgb_sampling)}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
假设我们有一棵树igraph:
library(igraph)
g <- make_tree(14, children = 3)
plot(g, layout = layout_as_tree)
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.3.0)于 2019 年 12 月 21 日创建
我们如何找到任意节点集合的最低共同祖先(LCA)?也就是说,在上面的例子中
等等。
感觉应该有一种优雅的方式来做到这一点igraph,但我还没有找到。我尝试过调用 的交叉点all_simple_paths,但由于我没有获得每个节点级别的好方法,因此这没有帮助。
我知道许多系统发育包为其他数据结构实现了 这一点,但如果图表上有合理的解决方案,我宁愿避免相互转换。(但是,我对tidygraph解决方案非常满意。)
假设我有一组相关的非标量结构,在它们上定义了一个可交换的算术运算。例如,
struct Foo {
a: f64,
b: f64
}
impl Add<f64> for Foo {
type Output = Foo;
fn add(self, v: f64) -> Self::Output {
Foo {
a: self.a + v,
b: self.b + v
}
}
}
impl Add<Foo> for f64 {
type Output = Foo;
fn add(self, foo: Foo) -> Self::Output {
Foo {
a: foo.a + self,
b: foo.b + self
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想利用这个操作在这组结构上实现一个特征。也就是说,我想要如下内容:
trait Bar: Add<f64, Output = Self> + Sized {
fn right_add(self, f: …Run Code Online (Sandbox Code Playgroud) 我有一个data.frame单条记录和一个 N 数字列。我想R在ggplot.
例如:
df <- data.frame(a=1, b=0, c=10, d=20)
Run Code Online (Sandbox Code Playgroud)
我调换了data.frame但没有设法命名两列。
注意:虽然 Python 实现了相同的图sns:
sns.barplot(x = 'Name', y = 'count', data*)
Run Code Online (Sandbox Code Playgroud)