为什么R中的coalesce()会为我返回额外的值?
我正在尝试使用为什么R中的coalesce()会为我返回额外的值?,r,dplyr,purrr,R,Dplyr,Purrr,我正在尝试使用coalesce()。示例数据集如下所示(可复制代码如下所示): 当我以这种形式传递两个向量时:coalesce(df$X2018,df$X2017),它工作正常 但是当我把向量放在如下位置时:df[4],df[3],我得到了意想不到的额外值 可复制的示例如下: library(tidyverse) df <- data.frame(stringsAsFactors=FALSE, Country = c("Australia", "UK",
coalesce()
。示例数据集如下所示(可复制代码如下所示):
当我以这种形式传递两个向量时:coalesce(df$X2018,df$X2017)
,它工作正常
但是当我把向量放在如下位置时:df[4],df[3]
,我得到了意想不到的额外值
可复制的示例如下:
library(tidyverse)
df <- data.frame(stringsAsFactors=FALSE,
Country = c("Australia", "UK", "USA"),
X2016 = c(10L, 15L, NA),
X2017 = c(NA, 20L, 40L),
X2018 = c(12L, NA, NA)
)
df
coalesce(df$X2018, df$X2017)
coalesce(df[4], df[3])
这是意料之中的
我不明白的是为什么coalesce(df[4],df[3])
返回:
[1] 12 20 40
X2018
1 12
2 NA, 20, 40
3 NA, 20, 40
我不明白它为什么返回前两列。当您使用
df[4]
时,实际上是指一个数据帧(或者更一般地说,是一个列表)。这就是取消合并
功能的原因。您可能打算这样做:
coalesce(df[[4]], df[[3]])
至于您为什么会看到当前输出,我们可能必须研究
合并的确切实现当您使用df[4]
时,您实际上指的是一个数据帧(或者更一般地说,一个列表)。这就是取消合并
功能的原因。您可能打算这样做:
coalesce(df[[4]], df[[3]])
至于您为什么会看到当前的输出,我们可能需要研究联合
的确切实现,对于将来研究此问题的任何人,除了Tim Biegeleisen的出色回答外,我还发现此链接非常有用,可以了解详细信息:[对于将来看这个问题的人来说,除了Tim Biegeleisen的精彩回答外,我还发现这个链接非常有用,可以了解细节:[