首页 > 解决方案 > R错误:不允许多参数返回,但没有多参数

问题描述

所以我的任务是帮助我的研究实验室的 PI 提出一个简单的函数来帮助从数据框中选择两个随机值,同时忽略 NA。我们工作有价值的数据是基于自我报告的数据,所以我们有一些地方没有回答,我们得到了 NA。我们不会放弃我们的 NA,但在分析子量表期间,我们确实需要选择一些值,同时忽略 NA。

我制作了一个简单的测试数据框,并开始使用我的测试功能。我知道它不会像我需要的那样工作,但我遇到了一个奇怪的错误。这是我的代码。

rm(list = ls())                   ### clear all ###
dev.off(dev.list()["RStudioGD"])
options(scipen=999)

install.package("dplylr")
install.package("magrittr")
library("magrittr")
library("dplyr")

df<- data.frame("Var1"=c(1,7,8), "Var2"=c(NA, NA, 9), "Var3"=c(2, NA,10), "Var4"=c(3,5,NA), "Var5"=c(4,7,NA))

#select columns funciton, picks two random values from data frame not containing NA
select.col <- function(x,y) ##given df x select y columns
  df %>% 
    select_if(is.numeric) %>%
    return(z)

b <- select.col(df,2)

因此,我正在尝试创建一个函数,该函数从未选择 NA 的每一行中选择第二个参数作为随机列。

我希望 b 成为一个新数据集,并由以下格式的数据组成:


1, 2
2, 7
3, 9

(基本上我的数据是在没有 NA 的情况下随机选择的……有点像基本的 x、y/输入输出表)

我遇到了这个问题,无论我如何重写这个函数,我都会得到同样的错误“不允许多参数返回”。

有什么想法或建议吗?

编辑:我修复了我希望数据外观的格式。把它想象成 CSV;所以在一列中是一个值,而在另一列中是另一个值。

标签: rfunctiondataframe

解决方案


当你写

df %>% 
select_if(is.numeric) %>%
return(z)

它与

return(select_if(df, is.numeric), z)

return不接受两个参数,这就是您收到错误消息的原因。另外,请注意您的 return 语句使用 z,但 z 没有在任何地方定义。


推荐阅读