ifelse()无法在R中正确存储值

时间:2018-06-21 16:28:01

标签: r if-statement conditional storage

我正在尝试将此代码用于for循环:

ifelse(split[[1]]$timeframe == 'post',
       split[[1]]$prcntgwk <- 1,
       split[[1]]$prcntgwk <- 2)

除非列时间范围的值是“ post”,否则它基本上是在创建计算,然后将存储NA,因为该计算不适用

这是我的输出:

> ifelse(split[[1]]$timeframe == 'post',
+        split[[1]]$prcntgwk <- 1,
+        split[[1]]$prcntgwk <- 2)
[1] 2 2 2 2 2 2 2 1

但是当我检索列时,我得到了:

> split[[1]]$prcntgwk
[1] 2 2 2 2 2 2 2 2

为什么我的值存储不正确???这根本没有任何意义。

1 个答案:

答案 0 :(得分:0)

您需要明智地执行操作元素,而不是整个向量。

> x = data.frame(a = c(1,2,3,4,5,6),b=c("post","no","post","post","no","post"))
> x
  a    b
1 1 post
2 2   no
3 1 post
4 1 post
5 2   no
6 1 post

> for (i in 1:nrow(x)) {
+ ifelse(x$b[i]=="post",x$a[i]<-1,x$a[i]<-2)}

> x$a
[1] 1 2 1 1 2 1