R,for 数据框列上的循环并需要来自其他列的值

标签 r if-statement for-loop dataframe

我有以下类型的数据框:

   Gender FSIQ VIQ PIQ Weight Height MRIcount IQindicator
1  Female  133 132 124    118   64.5   816932           1
2    Male  140 150 124     NA   72.5  1001121           1
3    Male  139 123 150    143   73.3  1038437           1
4    Male  133 129 128    172   68.8   965353           1
5  Female  137 132 134    147   65.0   951545           1
6  Female   99  90 110    146   69.0   928799           0

我的目标是制作 2 个向量,一个向量的 MRIcount 的 IQindicator 为 1,另一个向量的 IQindicator 为 0

我写了以下内容:

MRI_low <-c()
MRI_high <- c()
for (index in brain_data[,8]){
  if (index = 1){
    MRI_high <- append(MRI_high, MRIcount)
  } else {
    MRI_low <- append(MRI_low, MRIcount)
  }
}

我怎样才能做到这一点?

对于这个例子我需要:

> MRI_low <-c(928799) MRI_high <-c(816932, 1001121, 1038437, 965353,
> 951545)

最佳答案

您可以只使用逻辑索引。假设您的数据框的名称是 df,一种解决方案可能是

MRI_high <- df$MRIcount[df$IQindicator == 1]
MRI_low  <- df$MRIcount[df$IQindicator == 0]

使用 $ 运算符,您可以访问/提取数据框的变量。然后,您会看到括号中的逻辑条件。这使得向量由 TRUE 组成(如果指定条件成立),如果不成立则由 FALSE 组成。如果使用逻辑向量对向量进行索引,则将值保留为 TRUE。

关于R,for 数据框列上的循环并需要来自其他列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947964/

相关文章:

Java 程序逻辑错误。 IF..部分不工作/执行

java - 在 jsf 标签内调用 if 函数两次

检查大量列表的长度是否相同的 Pythonic 方法

java - 停止循环直到方法调用 onFinished()

c++ - 使用 RcppArmadillo 用 vector 填充上三角矩阵(包括对角线)

r - 使用 poweRlaw 包的幂律拟合截止分布

r - 如何用 R 中另一个 tibble 的估算列替换 tibble 中的 NA 列

r - r 中的 Shell 命令不适用于目录名称中的空格

Android Proguard Release导致不执行for-loop

javascript - 如何在 React 中渲染动态表单