我正在尝试将此代码用于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
为什么我的值存储不正确???这根本没有任何意义。
答案 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