我正在尝试使用coalesce()
。示例数据集如下所示(可重复的代码在其下):
Country X2016 X2017 X2018
1 Australia 10 NA 12
2 UK 15 20 NA
3 USA NA 40 NA
当我以这种形式传递两个向量时: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$X2018, df$X2017)
返回:
[1] 12 20 40
这是预期的。
我不明白为什么coalesce(df[4], df[3])
返回:
X2018
1 12
2 NA, 20, 40
3 NA, 20, 40
我不知道为什么它返回前两列。
答案 0 :(得分:3)
使用df[4]
时,实际上是在指数据框(或更普遍地说,是列表)。这就是摆脱coalesce
函数的原因。您可能打算这样做:
coalesce(df[[4]], df[[3]])
关于为什么,您正在查看当前输出,我们可能必须研究coalesce
的确切实现。