r - 通过将函数应用于数据框的每一行来创建具有命名值的列表

标签 r

我试图通过对数据框的每一行应用一个函数来获得一个列表,其中每个元素都有一个名称,但无法获得正确的输出。

假设这是我要应用于每一行的函数:

format_setup_name <- function(m, v, s) {
 a <- list()
 a[[paste(m, "machines and", v, s, "GB volumes")]] <- paste(num_machines,num_volumes,vol_size,sep="-")
 a
}

如果这是输入数据框:

df <- data.frame(m=c(1,2,3), v=c(3,3,3), s=c(15,20,30))

我无法获得如下所示的列表:

$`1-3-15`
[1] "1 machines and 3 15 GB volumes"

$`2-3-20`
[1] "2 machines and 3 20 GB volumes"

$`3-3-30`
[1] "3 machines and 3 30 GB volumes"

谁能告诉我怎么做?

为什么我需要这个?好吧,我想使用来自数据库的值以 Shiny 的方式填充 selectizeInput。由于我要合并多个列,因此我需要一种方法来将所选输入与值相匹配。

最佳答案

这是 setNames 的一个很好的用例,它可以将 names() 属性添加到对象。此外,如果您使用 as.list,您可以在一行中完成此操作而无需任何循环:

setNames(as.list(paste(df$m, ifelse(df$m == 1, "machine", "machines"), "and", df$v, df$s, "GB volumes")), paste(df$m,df$v,df$s,sep="-"))
# $`1-3-15`
# [1] "1 machine and 3 15 GB volumes"
# 
# $`2-3-20`
# [1] "2 machines and 3 20 GB volumes"
# 
# $`3-3-30`
# [1] "3 machines and 3 30 GB volumes"

关于r - 通过将函数应用于数据框的每一行来创建具有命名值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501176/

相关文章:

r - 优化 r 中函数的函数

c++ - BH R-package 可以链接到 boost "math"和 "numeric"吗?

r - 如何在 R markdown 中乱序显示变量?

r - 在 R 中展开矩阵的列

r - OpenCPU 如何同时运行计算量大的命令?

r - 隐藏 Shiny 的输出

r - 与 lmerTest 一起使用时,anova() 不显示 p 值

r - 在 R 中定义和实现接口(interface)

r - 解决R中的复数方程

r - 如何应对 R 中的 'non-numeric matrix extent' 错误?