Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么R中的coalesce()会为我返回额外的值?_R_Dplyr_Purrr - Fatal编程技术网

为什么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的精彩回答外,我还发现这个链接非常有用,可以了解细节:[