Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带有if语句的条件过滤器_R_If Statement - Fatal编程技术网

R 带有if语句的条件过滤器

R 带有if语句的条件过滤器,r,if-statement,R,If Statement,我的数据由列和行组成。每列都有NA和不同的数字。 例如,第1列是: 二, 1. 1. NA 1. NA NA NA 我想为每列中的数字分配一个列id for(j in 1:54){ if(!(col[j] <-"NA")){ col[j] <- i } } 第1列的预期结果: 一, 1. NA NA NA 1. NA NA 一, **第2栏:** 二, 2. NA NA NA 2. NA NA 2您可以使用 v <- c(2, 1, NA, NA, 4

我的数据由列和行组成。每列都有NA和不同的数字。 例如,第1列是:

二, 1. 1. NA 1. NA NA NA

我想为每列中的数字分配一个列id

for(j in 1:54){
    if(!(col[j] <-"NA")){
    col[j] <- i
    }
}
第1列的预期结果:

一, 1. NA NA NA 1. NA NA 一,

**第2栏:**

二, 2. NA NA NA 2. NA NA 2

您可以使用

v <- c(2, 1, NA, NA, 4, 5, NA)
id <- ifelse(!is.na(v), 1, NA)
id
1  1 NA NA  1 1 NA
这意味着这里不需要for循环。如果可以将函数应用于向量,则应避免使用for循环

另外,请提供您的数据,以便其他人可以像上面我的代码一样实际使用它

编辑

根据注释,您有多个列。您可以使用相同的代码。看这里

df <- data.frame(a= c(2, 1, NA, NA, 4, 5, NA), b= c(3, NA, NA, NA, 5, NA, 6))
id <- sapply(1:ncol(df), function(i){
             ifelse(!is.na(df[ , i]), i, NA)})
id
      a  b
[1,]  1  2
[2,]  1 NA
[3,] NA NA
[4,] NA NA
[5,]  1  2
[6,]  1 NA
[7,] NA 2

你用is.NA测试NA。娜娜和娜娜不一样,但我想看起来不是娜克!我有1259列。所以我需要一个循环,在这里我如何在编辑后保存每一列。比如:1 NA NA 1 NA>2 NA 2 NA 2我不完全理解这个问题。使用dputheaddata或so.dputheadMyData结构提供数据ListNA=c2L,1L,NA,NA,NA,8L,NA..1=c2L,NA,2L,NA,NA,NA,NA..2=c2L,NA,2L,NA,NA,X1=cNA,1L,NA,NA,NA,NA,NA..3=c2L,NA,2L,NA,7L,NA,X1.1=cNA,1L,NA,NA,NA,NA,NA,NA....=c2L,1:1259{