这是下面的数据。我不确定应该使用哪种类型的循环,但是这是我要执行的操作:如果对于第1行,存在6,那么对于第7列,我们为“是”,如果没有如果存在6,则第7列为“否”。忽略第8和9列。
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 6 1 1 6 1 NA NA NA
[2,] 5 5 5 5 5 5 NA NA NA
[3,] 1 1 6 1 1 6 NA NA NA
[4,] 5 5 5 5 5 5 NA NA NA
[5,] 6 1 1 6 1 1 NA NA NA
[6,] 5 5 5 5 5 5 NA NA NA
[7,] 1 6 1 1 6 1 NA NA NA
[8,] 5 5 5 5 5 5 NA NA NA
[9,] 1 1 6 1 1 6 NA NA NA
[10,] 5 5 5 5 5 5 NA NA NA
这是我的代码。
data.matrix <- matrix(data=NA,nrow = b, ncol = n+3)
b <- 10
n <- 6
for (i in 1:b)
{
data.matrix[,1:n] <- sample(6,n,replace=T)
}
侧面说明:我一直收到此错误 “条件的长度> 1,并且只会使用第一个元素”
答案 0 :(得分:0)
这是使用apply
的解决方案:
a[,7] <- apply(a, 1, function(x) ifelse(max(x,na.rm = T) == 6,"YES","NO"))
其中a
是输入data.frame / tibble。如上所述,如果您有matrix
,则将其转换为data.frame
并执行此操作。
答案 1 :(得分:0)
这是lapply
和which
的解决方案:
res <- apply(data.matrix, 1, function(x) {
x[[7]] <- length(which(x == 6)) > 0
x
})
res <- t(res)