Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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 如何使用另一个变量作为索引来创建变量?_R - Fatal编程技术网

R 如何使用另一个变量作为索引来创建变量?

R 如何使用另一个变量作为索引来创建变量?,r,R,我希望创建一个新的变量d,它从变量C的基础上获取a或b的值 dat = data.frame(a=1:10,b=11:20,c=rep(1:2,5)) 结果将是: d = c(1,12,3,14,... etc) 我们可以使用row/column索引,其中row索引是行的序列,column索引是'c'列,cbind它们并基于此从数据集中提取元素 dat$d <- dat[1:2][cbind(seq_len(nrow(dat)), dat$c)] dat$d #[1] 1 12 3

我希望创建一个新的变量d,它从变量C的基础上获取a或b的值

dat = data.frame(a=1:10,b=11:20,c=rep(1:2,5))
结果将是:

d = c(1,12,3,14,... etc)

我们可以使用
row/column
索引,其中row索引是行的序列,column索引是'c'列,
cbind
它们并基于此从数据集中提取元素

dat$d <- dat[1:2][cbind(seq_len(nrow(dat)), dat$c)]
dat$d
#[1]  1 12  3 14  5 16  7 18  9 20
dat$d你可以

dat$d <- ifelse(dat$c==1,dat$a,dat$b)

dat$dA
dplyr
variant

dat %>% 
  mutate(d = case_when(c==1 ~ a, 
                       TRUE ~ b))

非常感谢。虽然这对示例有效,但它是我问题的简化版本。akrun的解决方案可以推广到我的案例(20多列)。