首页 > 解决方案 > 使用 $ 运算符时循环返回 Null 值

问题描述

背景:我将标准曲线的斜率和偏移量应用于原始数据。原始数据组织在一个数据框中,Y 轴为“组”,X 轴为时间点。A 到 F 的每一组有 12 行和它自己的标准曲线。标准曲线值位于单独的数据框中。

问题:我尝试编写一个循环(for (char in abc)...)来遍历每个组并创建一个最终数据框,其中所有原始数据都已转换但我在使用$运算符和可迭代变量时遇到了问题(不确定它叫什么),即stdcrv.data$char,这是下面代码中的 SLOPE 步骤。SLOPE我得到and 的 NULL 值stdcrv.data$char

$运算符不能与 一起使用吗char?我应该如何修复这个循环?我附上了运行并执行我需要的“工作代码”,我为每个字母制作了一个,但我宁愿让它作为一个循环运行,而不是其中的六个。

循环摘要:循环应该遍历每个字母并将每个字母的 12 行原始数据子集。然后它应该从 stdcrv.data 创建一个唯一斜率和唯一偏移量的变量。最后一行通过这些变量转换原始数据并将它们绑定到一个新的数据帧。这是在工作代码中所做的,它只是不循环。

如果我在我的问题中提供太多信息,那么对 SO 来说还是陌生的,请告诉我,谢谢

原始数据:

Group 11:29  11:43  11:56  12:10  12:23   12:38   12:53   13:07   13:21   13:37   14:07   14:38   15:13
1     A 36090 123346 280239 529487 898173 1370663 1906590 2396293 2984783 3811666 5325242 6771652 8599776
2     A 33316 103971 245647 480937 826774 1256875 1680066 2174810 2621266 3327056 4733830 6035170 7601268

标准差错数据:

 X            A            B            C            D            E            F
1  Slope 1.190980e+05 1.178085e+05 112511.14940 1.097752e+05 1.136168e+05 1.036628e+05
2 Offset 1.859640e+05 1.588433e+05  59179.53093 1.343089e+05 1.369816e+05 9.994541e+03

工作代码

A<-raw.data[grep("A",raw.data$Group),]
Asub<-A[2:15]
ASLOPE<-stdcrv.data$A[grep("Slope",stdcrv.data$X)]
AOFFSET<-stdcrv.data$A[grep("Offset",stdcrv.data$X)]
Final<- cbind(A[1],(Asub-AOFFSET)/ASLOPE)

B<-raw.data[grep("B",raw.data$Group),]
Bsub<-B[2:15]
BSLOPE<-stdcrv.data$B[grep("Slope",stdcrv.data$X)]
BOFFSET<-stdcrv.data$B[grep("Offset",stdcrv.data$X)]
Final<- rbind(Final,(cbind(B[1],(Bsub-BOFFSET)/BSLOPE)))

尝试循环:

abc<- c('A', 'B', 'C', 'D','E','F')
for (char in abc){
  char.df <- raw.data[grep(char,raw.data$Group),]
  char.df.subset<-char.df[2:15]
  SLOPE<-stdcrv.data$char[grep("Slope",stdcrv.data$X)]
}

标签: rdataframeloops

解决方案


推荐阅读