从函数返回数据框

2024-01-01

我在函数中有以下代码

Myfunc<- function(directory, MyFiles, id = 1:332) {
# uncomment the 3 lines below for testing
#directory<-"local"
#id=c(2, 4)
#MyFiles<-c(f2.csv,f4.csv)
idd<-id

df2 <- data.frame()

for(i in 1:length(idd)) {
  EmptyVector <- read.csv(MyFiles[i])  
  comp_cases[i]<-sum(complete.cases(EmptyVector))
  print(comp_cases[[i]])
  id=idd[i]
  ret2=comp_cases[[i]]
  df2<-rbind(df2,data.frame(id,ret2))
 }
print(df2)
return(df2)
}

当我尝试通过选择函数内的代码并注释掉返回值来在 R 中运行它时,这是有效的。我从打印语句中得到了一个很好的数据框:

> df2
 id ret2
1 2  994
2 4  7112

但是,当我尝试返回数据框时df2该函数仅返回第一行,忽略所有其他值。我的问题是,它在函数中适用于我尝试过的各种值(使用各种组合打开多个文件),而不是当我尝试返回数据帧时。有人可以帮忙吗?预先非常感谢。


如果我理解正确,您正在尝试创建一个数据框,其中包含每个案例的完整案例数id。假设您的文件名称具有您指定的 id 号(例如f2.csv),您可以按如下方式简化您的功能:

myfunc <- function(directory, id = 1:332) {
  y <- vector()
  for(i in 1:length(id)){
    x <- id
    y <- c(y, sum(complete.cases(
      read.csv(as.character(paste0(directory,"/","f",id[i],".csv"))))))
  }
  df <- data.frame(x, y)
  colnames(df) <- c("id","ret2")
  return(df)
}

你可以这样调用这个函数:

myfunc("name-of-your-directory",25:87)

对上述代码的解释。您必须将问题分解为以下步骤:

  1. 你需要一个 id 的向量,这是通过x <- id
  2. 对于每个id您想要完整案例的数量。为了得到这个,你必须先读取文件。这是由read.csv(as.character(paste0(directory,"/","f",id[i],".csv")))。要获取该文件的完整案例数,您必须将read.csv里面的代码sum and complete.cases.
  3. 现在您想将该数字添加到向量中。因此你需要一个空向量(y <- vector()),您可以添加步骤 2 中完整案例的数量。这是通过将步骤 2 中的代码包装在其中来完成的y <- c(y, "code step 2")。这样您就可以添加每个案例的完整案例数id到向量y.
  4. 最后一步是将这两个向量组合成一个数据帧df <- data.frame(x, y)并分配一些有意义的colnames.

通过包括步骤 1、2 和 3(除了y <- vector()部分)在 for 循环中,您可以迭代指定 id 的列表。创建空向量y <- vector()必须在 for 循环之前完成,以便 for 循环可以将值添加到y.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从函数返回数据框 的相关文章

  • 使用 dplyr 进行括号转义的表名称

    我正在以编程方式获取一堆数据集 其中许多数据集都有以数字开头的愚蠢名称 并且其中包含特殊字符 例如减号 因为没有一个数据集特别大 而且我希望 R 能够对数据类型做出最好的猜测 所以我使用 dplyr 将这些表转储到 SQLite 中 我使用
  • 将鼠标悬停在 ggplot 上时更新 CSS 和渲染工具提示以错误的顺序发生

    我在这里构建了一个虚拟应用程序 它为 ggplot 生成悬停消息 并确保它们保持在屏幕边界内 我编写了一些计算来确定所需的 CSS 更正并将其发送到服务器 它基于将悬停消息保留在此处的第一次尝试 SO问题 https stackoverfl
  • 计算网络中的周期

    最好的方法是什么 或者是否有任何方法可以实现对网络中的 3 个和 4 个周期进行计数 3 个周期等于从一个模式网络计算的三个节点 三角形 的连接组 4 个周期等于由两个模式网络计算的四个节点 方块 的连接组 如果我有这样的网络 onemod
  • `filter()` 输入 `..1` 出现问题。与闪亮的R

    我正在尝试构建一个闪亮的应用程序 根据用户条目过滤数据帧 但是 我正在努力使用我创建的函数来执行此任务 错误Problem with filter input 1 x Input 1 must be of size 9 or 1 not s
  • 使用 dplyr::filter 创建 R 函数问题

    我查看了其他答案 但找不到使下面的代码起作用的解决方案 基本上 我正在创建一个函数inner join两个数据框和filter基于函数中输入的列 问题是filter部分功能不起作用 但是 如果我将过滤器从函数中取出并附加它 它就会起作用my
  • 通过 R 中的方向矩阵进行回溯

    我有一个这样的矩阵 https i stack imgur com mzeRI png https i stack imgur com mzeRI png 你可以像这样加载它 matrix structure c C G C A 0 V V
  • pandas.read_csv FileNotFoundError:尽管路径正确,但文件 b'\xe2\x80\xaa'

    我正在尝试加载一个 csv文件使用pd read csv 尽管文件路径正确并且使用原始字符串 但当我收到错误时 函数仍会起作用 import pandas as pd df pd read csv C Users user Desktop
  • 在 R Markdown 中,无论输出类型如何(pdf、html、docx),都在每个页面上创建页眉/页脚

    我想补充一下问题 当我编织为 pdf 时 那里的代码 也在下面 对我来说工作得非常好 但我不会获得 html 或 docx 输出的页眉 页脚 在 R Markdown 中 无论输出文档的类型如何 我可以做什么来为输出文档的每个页面生成页眉
  • 库存推文、文本挖掘、表情符号错误

    我希望您能够协助进行文本挖掘练习 我对 AAPL 推文感兴趣 并且能够从 API 中提取 500 条推文 我自己克服了几个障碍 但最后一部分需要帮助 由于某种原因 tm 包没有删除停用词 您能看一下可能是什么问题吗 表情符号会引起问题吗 绘
  • R 中二维核密度估计的混乱

    核密度估计器用于估计特定的概率密度函数 参见mvstat net http www mvstat net tduong research seminars seminar 2001 05 and scikit learn 文档 http s
  • 如何使用 caret 包解释模型输出的准确性

    我正在使用 caret 包来训练模型 并希望获得模型的准确性 我听说的一种常见方法是使用confusionMatrix 然而 当我运行下面的代码时 经过训练的模型给出了一些与confuseMatrix 报告的精度值略有不同的精度值 所以我的
  • 使用 cmd 和 R 配置 databricks

    我正在尝试使用 databricks cli 并调用 databricks 配置 这就是我从 cmd 执行此操作的方法 somepath gt databricks configure token Databricks Host shoul
  • 根据 Pandas 中用户指定的日期列和输入参数计算特定函数

    我有一个 df 如下所示 Date t factor 2020 02 01 5 2020 02 03 23 2020 02 06 14 2020 02 09 23 2020 02 10 23 2020 02 11 23 2020 02 13
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • 如何在闪亮的应用程序中初始化渲染项目的默认值

    介绍 In a shinyApp 我想用动态输入渲染输出 我的问题是 使用shinydashboard使用不同的选项卡 默认值来自 Input 仅当激活相应选项卡时才会呈现 想想输入和输出选项卡 当使用时我得到同样的行为switch声明in
  • 从数据/系数创建 lm 对象

    有谁知道可以在给定数据集和系数的情况下创建 lm 对象的函数 我对此很感兴趣 因为我开始使用贝叶斯模型平均 BMA 并且我希望能够根据 bicreg 的结果创建 lm 对象 我想访问所有不错的通用 lm 函数 例如诊断绘图 预测 cv lm
  • 在 R 中调用“boot”时没有数据

    我有一个包含很多列的数据框 第一列包含 系统 1 系统 2 等类别 第二列包含代表 0 和 1 的数字 请看下面 例如 SYSTEM Q1 Q2 S1 0 1 S1 1 0 S2 1 1 S2 0 0 S2 1 1 我在 R 中有这段代码来
  • 从谷歌街道地址中提取城市和州信息

    我有一个数据集 其中包含不同点位置的纬度 经度信息 我想知道与每个点关联的城市和州 按照此example https stackoverflow com questions 22911642 applying revgeocode to a
  • 如何改变R中数据框的形状? (将具有相同名称的列堆叠在一起)

    我正在尝试重塑 R 中的数据框 Gene ID Value Gene ID 1 Value 1 Gene ID 2 Value 2 1 A 0 A 3 A 1 2 B 5 B 6 B 5 3 C 7 C 2 C 7 4 D 8 D 9 D
  • 函数返回不向 main 返回值

    所以 这是我的第一个作业 摆弄 C 中的函数 我认为我理解它们是因为它们与 C 中的方法非常相似 但是 尽管我的 main 很好地调用了我的函数 并且该函数运行并返回到 main 它不会发送回它返回时调用的变量信息 我不太确定我做错了什么

随机推荐