R 无法识别映射函数中的对象

R 无法识别映射函数中的对象,r,purrr,R,Purrr,我有一个嵌套的数据框,我希望得到子数据框中每列的非NA行数,如下所示(简化版): df% tibble(x=1:2,y=) res% 变异(z=映射(y),函数(dat){ c(a=“a”,b=“b”)%%>%map\u int(函数(col){ dat%%>%过滤器(!is.na(!!sym(col))%%>%nrow() })%%>%enframe() })) 当我运行代码时,我得到一个错误,上面写着:错误:只有字符串可以转换为符号。似乎无法识别函数内部的col。 为什么会发生这种行为?如

我有一个嵌套的数据框,我希望得到子数据框中每列的非NA行数,如下所示(简化版):

df%
tibble(x=1:2,y=)
res%
变异(z=映射(y),函数(dat){
c(a=“a”,b=“b”)%%>%map\u int(函数(col){
dat%%>%过滤器(!is.na(!!sym(col))%%>%nrow()
})%%>%enframe()
}))
当我运行代码时,我得到一个错误,上面写着:
错误:只有字符串可以转换为符号。似乎无法识别函数内部的
col


为什么会发生这种行为?

如果您的数据被称为
df
,您可以执行以下操作:

library(dplyr)
library(purrr)

df1 <- df %>% mutate(res = map(y, ~.x %>% summarise_all(~sum(!is.na(.)))))

df1$res
#[[1]]
# A tibble: 1 x 2
#      a     b
#  <int> <int>
#1     4     3

#[[2]]
# A tibble: 1 x 2
#      a     b
#  <int> <int>
#1     3     2

如果您的数据被称为
df
,您可以执行以下操作:

library(dplyr)
library(purrr)

df1 <- df %>% mutate(res = map(y, ~.x %>% summarise_all(~sum(!is.na(.)))))

df1$res
#[[1]]
# A tibble: 1 x 2
#      a     b
#  <int> <int>
#1     4     3

#[[2]]
# A tibble: 1 x 2
#      a     b
#  <int> <int>
#1     3     2

非常感谢你!事实上,我自己设法得到了结果,但你的比我的简单得多,效率也更高:)我真的很感激。但是我仍然不明白为什么我以前的代码不能很好地工作。你知道吗?当你在做
map(y,…
时,你传递的是列值,而不是名称。我想这就是产生错误的原因。很抱歉,我没有得到你的答案…我以为子数据帧
tibble(a=…,b=…)
本身是通过
map传递的(y,
。我遗漏了什么吗?不是真的。你只传递
map
y
值,它在
mutate
语句中。嗯,你所说的
y
值是什么意思?我将数据帧存储在
y
列中,那么
y
值与数据帧不一样吗?我很抱歉我理解不太透彻非常感谢你!事实上我自己设法得到了结果,但是你的结果比我的简单得多,效率也更高:)我真的很感激。但是我仍然不明白为什么我以前的代码不能很好地工作。你知道吗?当你在做
map时(y,
您传递的是列值,而不是名称。我想这就是导致该错误的原因。很抱歉,我没有得到您的答案…我以为子数据帧
tibble(a=…,b=…)
本身是通过
映射传递的(y,
。我遗漏了什么吗?不是真的。你只传递
map
y
值,它在
mutate
语句中。嗯,你说的
y
值是什么意思?我在
y
列中存储了数据帧,那么
y
值与数据帧不一样吗?很抱歉我理解不清楚。。。
sapply(df$y, function(x) colSums(!is.na(x)))