gpt4 book ai didi

function - 自定义函数中的存储值

转载 作者:行者123 更新时间:2023-12-04 06:54:28 24 4
gpt4 key购买 nike

我的程序需要一个 data.frame 并处理数字。在某一时刻,来自第 j 列的值乘以取决于列名(物种名称,实际上 - 它是生态索引)的预定义值。到目前为止,我一直通过匹配列名通过第二个 data.frame 提供这些值。在函数中集成固定变量值的有效方法是什么?我希望我的程序尽可能便携,不需要第二个 data.frame 文件。

编辑

这就是功能。我正在尝试改进第二行(索引 <- read.table...),使其不依赖于外部源。

macroIndex <- function(obj, index) {
index <- read.table("conv.csv", header=T, dec=",")
a <- c()
b <- names(obj)
for (i in 2:length(obj)) {
obj[i] <- obj[i] * index[which(index==b[i]), 2]
}
obj
}

我尝试过的另一种解决方案虽然看起来不太漂亮,但它可以完成工作。我使用 dput(index) 并创建一个永久对象,然后将其插入到我的函数中。

最佳答案

好吧,您需要将列名映射到另一个值,因此您必须以某种方式存储它。我会说命名列表将是更合适的数据结构,尽管在一天结束时它并没有太大的区别。

以下是一些示例数据:

df <- data.frame(a=1:5, b=2:6)
mapping <- list(a=3, b=4)

这是使用列表的简单示例:
for(i in 1:ncol(df)) df[,i] <- df[,i] * mapping[[colnames(df)[i]]]

关于 Tal 使用矩阵的建议:只要您的数据框中的每个值都是相同类型,这就是正确的。如果您有混合类型,那么您需要坚持使用数据框。

关于function - 自定义函数中的存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com