这是我正在使用的代码:
x <- c("Yes","No","No","Yes","Maybe")
y <- t(1:10)
z <- t(11:20)
rbind.data.frame(ifelse(x == "Yes",y,z))
这会产生
X1L X12L X13L X4L X15L
1 1 12 13 4 15
期望的结果是:
x
1 Yes 1 2 3 4 5 6 7 8 9 10
2 No 11 12 13 14 15 16 17 18 19 20
3 No 11 12 13 14 15 16 17 18 19 20
4 Yes 1 2 3 4 5 6 7 8 9 10
5 Maybe 11 12 13 14 15 16 17 18 19 20
我想我可以将 ifelse 语句与 rbind.data.frame() 或 cbind.data.frame() 函数一起使用。因此,如果x == "Yes"
然后它将与向量“y”组合。如所需输出的第一行所示。反之若x!="Yes"
然后它将与向量“z”组合。我将如何去做这件事。我还认为也许可以使用 which() 函数进行索引,但我无法想到如何使用它。
更新另一个问题
这是我正在使用的代码:
a <- c(1,0,1,0,0,0,0)
b <- 1:7
t(sapply(a, function(test) if(test==0) b else 0))
Which produces
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 Integer,7 0 Integer,7 Integer,7 Integer,7 Integer,7
你们中有人能解释一下吗?下面的代码有效,但我想知道为什么 sapply 函数不起作用。另外我将如何保存下面创建的矩阵?
`row.names<-`(t(t(rbind(b,0))[,(a!='1')+1L]),x)
回答我最近的问题
为了使 sapply 函数正常工作,它需要 else 语句中的输入是一个向量,因此,
a <- c(1,0,1,0,0,0,0)
b <- 1:7
c <- rep(0, times = length(a))
t(sapply(a, function(test) if(test==0) b else c))
现在这会产生正确的输出。