在具有整数和字符变量的数据框上按行应用 FUN

2024-04-11

一个完全基本的问题 - 如果重复,请原谅我。

set.seed(1)
df <- 
  data.frame(id=c('a', 'a', 'b', 'b', 'a'),
             a=sample(1:10, size=5, replace=T),
             b=sample(1:10, size=5, replace=T),
             c=sample(1:10, size=5, replace=T)) 

Then,

> df
  id  a  b c
1  a  3  9 3
2  a  4 10 2
3  b  6  7 7
4  b 10  7 4
5  a  3  1 8

返回具有最大值的列名(a、b 或 c),如果它在id变量取第二高,我使用下面的函数。

FUN <- function(r) {
  top <- names(r[,c('a', 'b', 'c')])[order(r[,c('a', 'b', 'c')], decreasing=T)]
  ifelse(top[1] == r[['id']], top[2], top[1])
}

我可以:

FUN(df[1,]) #[1] "b"

对于所有行:

res <- NULL
for(i in 1:nrow(df)) {
res <- c(res, FUN(df[i,]))  
}

And get

> res
[1] "b" "b" "c" "a" "c"

但我怎样才能apply这 ?例如。这不起作用:

apply(df, 1, FUN)

我怀疑问题在于FUN假设一个 1 行数据框(而不是像(第一行)这样的命名字符向量)

 id   a   b   c 
"a" "3" "9" "c"

From apply?:

如果 X 不是数组,而是具有非空暗淡值的类的对象(例如数据框),则应用尝试通过 as.matrix 将其强制转换为数组(如果它是二维的)(例如,数据帧)或通过 as.array。


另一种选择是对您的FUN。我认为你遇到的问题是apply会将每一行视为一个向量。自从你的id列是一个字符,这意味着您的a/b/c列也将被强制为字符。意识到这一点我们可以修改FUN稍微将其转换回numeric订购信息:

FUN <- function(r) {
  top <- c('a', 'b', 'c')[order(as.numeric(r[c('a', 'b', 'c')]), decreasing=T)]
  ifelse(top[1] == as.character(r['id']), top[2], top[1])
}

apply(df, 1, FUN)
#[1] "b" "b" "c" "a" "c"

要更详细地了解它是如何工作的,您可以运行下面的命令并查看apply正在读取命名字符向量。

apply(df, 1, function(x) {print(x); print(class(x)); return(NULL)})
#  id    a    b    c 
# "a" " 3" " 9"  "3" 
#[1] "character"
#  id    a    b    c 
# "a" " 4" "10"  "2" 
#[1] "character"
#  id    a    b    c 
# "b" " 6" " 7"  "7" 
#[1] "character"
#  id    a    b    c 
# "b" "10" " 7"  "4" 
#[1] "character"
#  id    a    b    c 
# "a" " 3" " 1"  "8" 
#[1] "character"
#NULL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在具有整数和字符变量的数据框上按行应用 FUN 的相关文章

  • 将日期添加到日历热图 R

    I m plotting a calender heat map using Paul Bleicher s calenderHeat R code https raw githubusercontent com iascchen VisH
  • 根据其他列设置列的值

    我有一个数据框 如下所示 ID Score New ID New Score 123 5 456 456 1 789 789 0 123 我想为 New ID 列提供相同的分数 只是顺序不同 期望的结果 ID Score New ID Ne
  • 函数不会在所有代码路径上返回值。使用结果时,运行时可能会发生空引用异常

    我收到此错误 函数 getkey 不会在所有代码路径上返回值 当结果为空引用异常时 可能会在运行时发生 用过的 到以下代码 Public Function getkey ByVal id As String Dim cmd As SqlCo
  • Spark DataFrame 删除重复项并保留第一个

    问题 在 pandas 中 当删除重复项时 您可以指定要保留哪些列 Spark Dataframes 中有等效的吗 Pandas df sort values actual datetime ascending False drop dup
  • 如何编写循环来运行数据框的 t 检验?

    我遇到了对数据框中存储的某些数据运行 t 检验的问题 我知道如何一一做 但效率很低 请问如何写一个循环来实现呢 例如 我在testData中获取了数据 testData lt dput testData structure list Lab
  • 带插入符的主成分分析

    我正在使用 Caret 的 PCI 预处理 multinomFit lt train LoanStatus train method multinom std TRUE family binomial metric ROC thresh 0
  • 获取因子变量中水平和标签之间的原始关联

    我正在寻找一个函数来获取因子变量的原始映射表 我导入一个 Rdata 文件 我有一个名为 FactVar 的因子变量 我知道 FactVar 的映射表如下 010025 gt city1 015146 gt city2 048017 gt
  • 在 R 中的轴标签中绘制表情符号/自定义图像

    我正在尝试在 R 中绘制表情符号和自定义图像作为 X 轴的标签 我读过类似的帖子并且问题 https stackoverflow com questions 47730589 plot emojis emoticons in r with
  • 使用ggmap在地图上绘制等高线

    我有洛杉矶港地区的颗粒物浓度差异 之后 之前 我正在尝试使用 ggmap 在地图上绘制浓度等值线 但结果看起来很不同 我使用的代码如下所示 数据位于代码下方 Code 安装 packages ggmap library ggmap PM r
  • R:计算数据框的边距或行和列总和

    我有一个如下所示的数据框 Flag1 Flag2 Type1 Type2 Type3 1 A FIRST 2 0 0 2 A SECOND 1 9 0 3 A THIRD 3 7 0 4 A FOURTH 9 18 0 5 A FIFTH
  • C# vb:S​​ystem.Func 占用多少内存?

    System Func 究竟拥有多少内存 System Func 是 1 行还是 1000 行有什么区别吗 Func是委托类型 一个实例在x86抖动中占用32字节存储 对象头 8 个字节 4 个字节用于 Delegate methodBas
  • 如何将数据框随机分成三个具有给定行数的较小数据框

    使用 R 我想将一个数据帧随机拆分为三个较小的数据帧 第一个占总观测值的 80 第二个和第三个分别占总观测值的 15 和 5 三个数据框不能有任何重叠 你有什么建议吗 这是一个快速函数 可以根据您在 props 参数中指定的值的数量分成任意
  • 拆分数字 yyyymmdd 列

    我有一个包含 DATE 列的数据框 我将其引用为 NM DATA DATE 它是一个 yyyymmdd 形式的数字 我知道 有一百个线程 我尝试了所有能找到的解决方案 但它们对我不起作用 即将重新加载 RStudio NM DATA DAT
  • 将 Fig.cap 设置为 options$label

    如何以编程方式在knitr hook 中设置图形标题 如果没有明确定义 我想将图形标题设置为块标签 我已经阅读了knitr文档options http yihui name knitr options options http yihui
  • R mapbox / 带有动画和 shapefile 的绘图

    我正在制作一个动画 显示地图上绘制的空间数据 并带有基于日期的动画滑块 除此之外 我想绘制一个随时间变化的形状文件 我的动画在没有 shapefile 的情况下也能正常工作 绘制标记和形状文件不会显示形状文件 似乎是两者之间的某种脱节add
  • dplyr:在 group_by 组中添加行

    有没有更好的方法来添加行group by 组比使用bind rows 这是一个有点笨拙的例子 df lt data frame a c 1 1 1 2 2 b 1 5 df gt group by a gt do bind rows dat
  • 如何在data.table中编写累积计算

    顺序累积计算 我需要进行时间序列计算 其中每行计算的值取决于上一行计算的结果 我希望能够利用data table 实际问题是水文模型 累积水平衡计算 在每个时间步长增加降雨量 并减去径流和蒸发作为当前水量的函数 该数据集包括不同的流域和场景
  • 显示函数的完全限定名称

    include
  • data.frame 不会破坏列名

    有没有办法使用 data frame 而不破坏列名 我有以下结构 Canon PowerShot 1 9 997803e 01 9 997318e 01 3 327920e 01 3 327920e 01 9 988220e 01 6 4
  • ggplot2:从纵横比中排除图例

    I use ggplot2 and knitr发布带有右侧图例的散点图 图例包含在纵横比中 因此破坏了绘图的 方形 如图所示默认主题 https github com hadley ggplot2 wiki themes 当图例文本变得比

随机推荐

  • Libgdx 模板和形状渲染器

    我正在尝试完成这样的事情 样本图像 https i stack imgur com CkdSO jpg 整个屏幕将是黑色的 然后三角形的内部是只会出现的部分 我尝试使用剪刀 但它是矩形的 原始图片来源 https www html5rock
  • 使用 LINQ 将对象属性组合到列表中

    假设我在 objectX 上有属性 num1 num2 num3 我想获取一个 objectX 列表并创建一个用 num1 num2 num3 值填充的整数列表 下面是使用 System Drawing Point 的示例 Point p1
  • Ctypes 在使用 CMake 创建的共享库中找不到符号

    我在 linux 中创建共享库的 CMake 设置类似于 SET CMAKE CXX FLAGS fPIC SET LIB UTILS SRC Utils cpp ADD LIBRARY UTILS SHARED LIB UTILS SRC
  • 在Python中定义函数之前是否可以调用它? [复制]

    这个问题在这里已经有答案了 如何定义函数的原型 我在其定义之上调用了我的函数 但它不起作用 python 解释器无法识别我的函数 例如 my function def my function print Do something Unres
  • 单例类 iPhone

    好吧 我试图避免全局变量 所以我阅读了单例类 这是尝试设置和读取可变数组 但结果为空 Content h interface Content NSObject NSMutableArray contentArray Content shar
  • 在 Android 中,当变量发生变化时如何采取行动?

    在 Android 应用程序 或者更一般的 Java 应用程序 如果没有什么不同的话 中 每当变量的值发生变化时调用方法的最佳方式是什么 您真正想要做的是设置事件驱动模型以在事件发生时触发侦听器 在您的情况下 假设变量值已更改 这不仅对于
  • 如何在 Emacs 中将 ESC 绑定到 Keyboard-Escape-quit?

    Normally keyboard escape quit http www gnu org software emacs manual html node emacs Quitting html is bound to EscEscEsc
  • 在 HTTP 和 HTTPS 之间切换时,JSessionID 会被覆盖。怎么解决?

    我们遇到以下情况 Go to http website 并单击链接http 网站 appX检查 cookie 是否显示 JSessionID 且 secure NO 打开另一个浏览器窗口或选项卡并转到https website 并单击链接h
  • 相对于彼此对齐 TextView

    我有两个 TextView 第一个 TextView 包含动态文本 可以小也可以大 第二个 TextView 包含静态小文本 第二个 TextView 应位于第一个 TextView 的右侧 它应该是这样工作的 when first tex
  • ServerSocket中setReuseAddress的作用是什么?

    我有一个简单的逻辑 Java 来检查端口是否已在使用中 public static boolean isPortInUse int port ServerSocket socket null try socket new ServerSoc
  • 如何在 swagger 中提供 XML 参数示例

    我在用Swashbuckle 5 6 0 and Swashbuckle Examples 3 5 1记录 WebApi2 项目 我有一个使用 XML 正文并返回文本响应的操作 我希望文档包含 XML 输入的示例 例如
  • 在R中,负索引有什么作用?

    我正在将程序的一部分 不足以编译和运行 从 R 移植到 C 我对 R 不熟悉 我使用在线参考资料做得很好 但被以下行难住了 cnt2 2 lt cnt2 1 我猜测 cnt2是一个二维矩阵 cnt2 2是一个用句点 声明的新变量使用方式与字
  • 如何在 Play Framework 关闭期间等待 Actor 停止?

    下面的代码抛出一个java lang IllegalMonitorStateException当我关闭播放服务器时出现异常 它是由a 等待 1000 调用onStop方法 谁能告诉我为什么会出现这种情况以及如何优雅地等待 Actor 在 P
  • 如何读取文件中的数据,并将其传递给结构〜> C

    好的 我的主目录中有一个名为 Graduates txt 的文件 我有一个便携式程序来查找主目录 然后我打开该文件进行读取 文件中的数据看起来像这样 year firstName lastName 我需要从该文件中获取这些数据 并将其分离到
  • 了解 Elm 中的通用联合类型

    我无法理解到底是什么Html msg类型是什么 或者它如何使用 我在 VirtualDom elm 中找到了这行代码 其中Html msg似乎是以下别名 type Node msg Node 这看起来像一个带有一个类型参数的通用联合类型 m
  • spring-form:带有枚举的选项标签

    我在显示具有正确值的下拉列表时遇到问题 我正在使用
  • 正则表达式解析类似 Javascript 函数调用的语法

    我有以下数据可能性 fnname fnname value fnname value valueN 我需要一种方法用 javascript 正则表达式解析它以获得数组 fnname fnname value fnname value val
  • C#/.Net 中的缓存

    我想问你在 C 中实现缓存的最佳方法是什么 是否有可能使用给定的 NET 类或类似的东西 也许像字典这样的东西会删除一些条目 如果它变得太大 但是哪些条目不会被垃圾收集器删除呢 如果您使用 NET 4 或更高版本 则可以使用内存缓存 htt
  • 使用不同的应用程序对 git 中的 diff 输出进行着色

    我想用cdiff https pypi python org pypi cdiff使用 git 时对差异输出进行着色 我可以通过 cdiff 传递 git 命令的输出 但我想知道是否可以不必这样做 具体来说 当我使用git log p 当我
  • 在具有整数和字符变量的数据框上按行应用 FUN

    一个完全基本的问题 如果重复 请原谅我 set seed 1 df lt data frame id c a a b b a a sample 1 10 size 5 replace T b sample 1 10 size 5 repla