对于循环返回向量给出完全相同的结果

时间:2018-02-28 16:06:47

标签: r for-loop

我的数据框包含5个不同时间点的6390个人的BMI分数。从这个数据帧,有一些缺失的数据,我想只选择每个时间点BMI <18.5的那些,并将它们放在不同的向量中。

我可以使用

手动执行此操作
ondergew1 <- bmir1[bmir1<18.5& !is.na(bmir1)]
ondergew2 <- bmir1[bmir2<18.5& !is.na(bmir2)]
ondergew3 <- bmir1[bmir3<18.5& !is.na(bmir3)]
ondergew4 <- bmir1[bmir4<18.5& !is.na(bmir4)]
ondergew5 <- bmir1[bmir5<18.5& !is.na(bmir5)]

但是,因为我将执行许多类似的操作,所以我希望自动化。我尝试使用:

for (i in 1:ncol(bmi)){
  assign(paste0("ondergew",i),bmi[bmi<18.5& !is.na(bmi)])
}

但是这会将整个数据帧中的所有值<18.5返回到5个不同的向量。我尝试使用paste0函数为每个循环选择一个不同的时间点,如下所示:

for (i in 1:ncol(bmi)){
  assign(paste0("ondergew",i),paste0("bmir",i)[paste0("bmir",i)<18.5& !is.na(paste0("bmir",i))])
}

这确实产生了5个不同的矢量,名称为ondergew1-ondergew5,但它们都是空的。有没有一种巧妙的方法来解决这个问题?我有一个bmi数据帧中的bmi数据,以及每个时间点单独的bmir1-bmir5向量。

0 个答案:

没有答案