【发布时间】:2018-01-23 09:30:05
【问题描述】:
我有一个像下面这样的数据框,但是每次我想做以下操作时数据框名称都会改变:
name <- "test"
type <- "test_type"
ACTUAL <- replicate(1,sample(0:1,1000,rep=TRUE))
assign(paste(name, type, sep = ""), cbind(data.frame(replicate(10,sample(c(NA, 0, 1),1000,rep=TRUE))), ACTUAL))
第 11 列中的值是正确值,前 10 列是预测值(一些 NA 值,因为它不是在每次迭代中都预测的)。我想添加另一列,告诉我预测模型正确的时间比例(忽略 NA 值,因为我不希望模型每次都预测每个样本)。
我想做类似以下的事情,但它不起作用:
for (x in 1:nrow(get(paste(name, type, sep = "")))) {
get(paste(name, type, sep = ""))[x, "ACC"] <-
as.character(rowMeans(get(paste(name, type, sep = ""))[x,-c(which(is.na(get(
paste(name, type, sep = "")
)[x, ])),
grep("ACTUAL", colnames(get(
paste(name, type, sep = "")
))),
grep("names", colnames(get(
paste(name, type, sep = "")
))))] == get(paste(name, type, sep = ""))[x, "ACTUAL"]))
}
您能否建议如何使用变量名称将准确度值分配给数据框中的这个新列? assign 不起作用,因为我将值分配给非字符值。
我也无法创建中间变量,因为这是一个更大的函数的一部分,并且在具有共享内存的并行系统上运行该函数时,变量名称不会混淆是很重要的。
谢谢!
编辑:我意识到我应该提到解决方案Assign to a variable data frame in R 使用中间变量,所以我专门寻找没有中间变量的解决方案。谢谢。
【问题讨论】:
标签: r