【发布时间】:2015-10-08 09:58:37
【问题描述】:
我有一个初学者的问题。它与效率和使用更少的代码行有关。 (我计划在大学主修计算机科学,我认为在编码方面做得更好会很好!)我有一个包含 45 个变量和 1000 多个观察值的数据集,但我需要操纵其中的 3 个变量并找到其中的最小值每一列。
例如,我在第 11 列中有变量 1(称为“var1”),在第 17 列中有变量 2(“var2”),在第 23 列中有变量 3(“var3”)。我有一个函数将字符串作为参数(var1、var2 或 var3),进入数据集中的该列,并循环遍历该列并搜索最小值。
目前我的代码似乎效率很低:
whichLowest <- function(variable) {
# Function has some read.csv things and other pre-computational stuff here
if (variable == "var1")
varData <- subset(myDataset, select = colnames(stateData)[11])
else if (variable == "var2")
varData <- subset(myDataset, select = colnames(stateData)[17])
else if (variable == "var3")
varData <- subset(myDataset, select = colnames(stateData)[23])
else
stop("invalid outcome")
for (i in varData) {
# calculates lowest value in that column
}
如您所见,我在 for 循环中有 3 个 if 语句来找出赋予函数的变量是什么。因为我有 3 个 if 语句,所以我觉得有一种更有效的方法可以做到这一点。我的想法是给 var1、var2 和 var3 分配一些数字,然后做同样的事情。但是我不知道如何解决这个问题!
【问题讨论】:
-
请发布一个可重现的示例(生成数据的代码,可能使用随机)
-
使用字符串查找列称为列索引(按名称)
标签: r performance indexing dataframe