r - 将 R 代码中的列范围概括为未知的列数
问题描述
我想以一种通用的方式运行这段代码。我的 df 的 12 到 25 列中有 TN 类型变量。我想保留我的所有数据,并在一个名为 sumTN 的新变量中按行计算 TN 类型变量的有效 chr 类型值的总和。这些变量中缺少数据的地方我有NA。
df$sumTN <- as.vector(rowSums(!is.na(df[, c(12:25)])))
我想为其他数据集提供此代码,其中 TN 类型变量(我想按行获得它们的总和)可能位于具有不同范围的不同列中。
我尝试了两种不同的方法来获得它,但两种情况下我都收到一条消息“'x'必须是至少二维的数组”。我明白为什么,但我不知道如何解决这个问题。以下是我尝试过的代码:
firstcol = which(colnames(df)=="TN_1")
lastcol = which(colnames(df)=="TN_14")
df$sumTN <- as.vector(rowSums(!is.na(df[, c(firstcol:lastcol)])))
df$sumTN <- as.vector(rowSums(!is.na(df[, c(grep("^TN_[0-9]+$", colnames(df)))])))
任何解决方案将不胜感激,谢谢。
解决方案
那正是我所想。代码看起来不错,但对于某些数据框,它必须返回单列。这些被转换为向量。您可以做的是使用drop=FALSE
来抑制这种行为。另外,在 isna Dataframe 上做子集。
试试这个
rowSums( (!is.na(df))[, c(grep("^TN_[0-9]+$", colnames(df))), drop=FALSE] )
推荐阅读
- gcc - gcc 链接器,如何声明 HEAP 和 STACK 之间的区域,将变量放在那里以检测溢出(Cortex M3 上的硬故障问题)?
- azure - 允许 IP 地址通过 SQL Server 防火墙
- networking - 如何在 Visual Studio 2019 中查看网络流量
- python - 属性 AttributeError:模块 'tensorflow.compat.v2' 没有属性 '_internal_'
- vert.x - Junit , Mockito 与 Vertx 的集成
- date - Google表格:根据日期在选项卡上显示值
- documentation-generation - 是否有任何工具可以轻松创建结构图?
- python - 使用 PyMuPDF 进行图像替换
- javascript - 进入数组索引的状态给出错误反应
- file - 从子文件夹中的文件列表批量复制文件