【发布时间】:2015-10-14 10:09:58
【问题描述】:
我想使用 ifelse 语句来创建一个新变量,比如 z。但是,其中一个返回值取决于矩阵的第 i 列。这是一个简单的例子
set.seed(1)
data <- data.frame(x = rnorm(10), y = rnorm(10), ind = rep(c(0, 1), 5))
m <- data.frame(matrix(rnorm(100), 10, 10))
z <- ifelse(data$ind == 1, data$x, sum(m[, i]))
我知道带有 z 的行不会运行,但它说明了我想要做什么。如果一个主题的 ind 变量等于 0,那么我将 m 中对应于主题 i 的列的 10 个条目的总和分配给 z。
我可以使用 ifelse 执行此操作,还是需要一个 for 循环?我试图远离 for 循环,这就是我首先尝试 ifelse 的原因。
z 应该是这样的:
z
[1] -1.3367324 0.1836433 1.3413668 1.5952808 4.5120996 -0.8204684 1.2736029
[8] 0.7383247 3.4748021 -0.3053884
谢谢!
【问题讨论】:
-
您目前遇到什么错误?
-
好吧,如果我在最后一行使用了“i”,我会收到一条错误消息,指出“i”未找到。如果我使用没有特定索引的 m,它将添加 m 的每个条目,我只想添加第 i 列。
-
您如何确定使用哪个
i值?您的问题并不清楚这一点。 -
我不想实际使用 i 值,我只是将其包括在内以说明我想要做什么,因为我不确定如何在 ifelse 语句中到达 m 的特定列.基本上,我将对应于 data$ind[i] == 0 的主题(行号)。
标签: r