Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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 使用ifelse将向量作为新列插入_R_If Statement - Fatal编程技术网

R 使用ifelse将向量作为新列插入

R 使用ifelse将向量作为新列插入,r,if-statement,R,If Statement,我想使用if语句从向量创建一个新列。但是,结果仅输入向量沿列向下的第一个值。有没有办法把向量放进去?我试过c和as字符。 非常感谢任何帮助 data <- data.frame(n = seq(1:21)) ladder1 <- c(50, 75, 100, 125, 150, 200, 250, 300, 350, 400, 450, 475, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000) ladder2 <-

我想使用if语句从向量创建一个新列。但是,结果仅输入向量沿列向下的第一个值。有没有办法把向量放进去?我试过c和as字符。 非常感谢任何帮助

data <- data.frame(n = seq(1:21))
ladder1 <- c(50, 75, 100, 125, 150, 200, 250, 300, 350, 400, 450, 475, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000)
ladder2 <- c(50, 75, 100, 200, 250, 300, 350, 400, 450, 475, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000)
data$ladder <- ifelse(nrow(data) == 23, ladder1,
                      ifelse(nrow(data) == 21, ladder2))
ifelse输出与您正在测试的变量长度相同的向量,该变量的长度为1,此处nrowdata==23,因此它只输出在整个列中循环使用的第一个变量

改用if/else:

data$ladder <- if(nrow(data) == 23) ladder1 else if(nrow(data) == 21) ladder2
ifelse输出与您正在测试的变量长度相同的向量,该变量的长度为1,此处nrowdata==23,因此它只输出在整个列中循环使用的第一个变量

改用if/else:

data$ladder <- if(nrow(data) == 23) ladder1 else if(nrow(data) == 21) ladder2

因为您只是在两种情况之间切换,所以也可以使用switch:

甚至:

data$ladder <- get(c("ladder1", "ladder2")[c(23, 21) %in% nrow(data)])

因为您只是在两种情况之间切换,所以也可以使用switch:

甚至:

data$ladder <- get(c("ladder1", "ladder2")[c(23, 21) %in% nrow(data)])

太好了,谢谢,太好了太好了,谢谢,太好了