【发布时间】:2017-08-28 12:03:05
【问题描述】:
我查看了有关此主题的不同问题,但到目前为止,没有一个问题能帮助我获得我想要的东西。
我有一个数据框,有两个变量(standardized_'testname')和'predicted_standardized_'testname')。现在,我想计算两者之间的差异并将其存储在一个名为“testname”_finalscore 的新变量中。
由于我有大约 19 种不同的测试,我想在 R 中使用 for 循环来执行此操作 - 但我是编写这类循环的新手,我被卡住了。
我有一个测试列表,其中包含单独测试的所有名称:
testlist <- c("vlgt_ltfr", "vlgt_recog",
"vlgt_imrec", "wms_imrec",
"wms_delrec", "fluency_dier",
"fluency_beroep", "tapdom",
"tapndom", "traila", "trailb",
"erik_congruent", "erik_percincong",
"erik_incongruent", "stroop_baseline",
"stroop_interference", "subrs", "tmt_interference")
为此,我编写了一个循环来计算标准化和预测标准化的分数。
例子:
for( test in testlist){
patdat[,paste0('standardized_',test)] <- (patdat[,test] - tempmean) / tempsd
patdat[,paste0('predicted_standardized_',test)] <- coef(mymod)[1] + coef(mymod)[2]*patdat[,'p_age'] + coef(mymod)[3]*patdat[,'nlviq']
}
在此之后,我创建了不同的循环(不起作用),在其中我尝试计算差异并将其存储在一个新变量中:
for( test in testlist){
normdata[,paste0(test,'_finalscore')] <- (normdata[,paste0('standardized_', test)] - normdata[,paste0('predicted_standardized_', test)])
}
for(test in testlist){
normdata[,paste0(test, '_finalscore')] <- normdata[get('standardized_',test)] - normdata[get('predicted_standardized_'), test]
}
for(test in testlist){
normdata[,paste0(test, '_finalscore')] <- (normdata['standardized_',test] - normdata['predicted_standardized_', test])
}
我确实得到了一个带有 'testname'_finalscore 的变量,但是它是空的。我认为我的索引错误,并且可能有一个函数可以用来解决这个问题 - 但我还没有找到它。
数据示例
> normdata$standardized_subrs
[1] -0.45551 0.61058 0.18414 0.18414 -0.13568 -1.30838 0.39736
[8] 0.71719 -0.13568 -0.13568 0.29075 0.18414 1.99649 -1.62821
> normdata$predicted_standardized_subrs
[1] -0.458274 0.174143 -0.492066 -0.414063 0.081612 0.488208
[7] 0.399994 0.416249 -0.113008 -0.398671 0.943571 0.316543
我想要的是一个看起来像这样的变量“subrs_finalscore”,但是对于testlist中的所有测试:
> normdata$standardized_subrs - normdata$predicted_standardized_subrs
[1] 0.002764 0.436435 0.676208 0.598205 -0.217296 -1.796589
[7] -0.002633 0.300938 -0.022676 0.262987 -0.652819 -0.132400
提前致谢。
【问题讨论】:
-
normdata <- data.frame( standardized_subrs = c(-0.45551, 0.61058, 0.18414), predicted_standardized_subrs = c(-0.458274, 0.174143, -0.492066) ) ; testlist <- c("subrs") ; for( test in testlist){ normdata[,paste0(test,'_finalscore')] <- (normdata[,paste0('standardized_', test)] - normdata[,paste0('predicted_standardized_', test)]) }在我身边工作。它在你的身上吗?如果不是,是什么问题(错误)? -
这里也可以!不知道为什么以前没有,可能是错字或其他什么...谢谢!我无法理解出了什么问题。
-
在您的示例中,
standardized_subrs和predicted_standardized_subrs的观察量不同