R 使用多列作为输入的sappy函数

R 使用多列作为输入的sappy函数,r,missing-data,R,Missing Data,我有一个数据框,比如说2列4行,它更大。。。我只是把它简化成这样: 数值:0.2,0.3,0.5,0.8 R:1,0,1,0 我试着写一条简单的线,给定R的值,当R为0时返回value,当R为1时返回NA。 我会这样写: sapplydataframe[[R]],functionx ifelsex==1,NA,dataframe[[Value]][[indexOfx]] 有没有像我的虚幻函数的索引一样的东西可以用 对于循环来说,这项任务将非常容易使用,但我想用sapply有效地完成它 如果你要找

我有一个数据框,比如说2列4行,它更大。。。我只是把它简化成这样: 数值:0.2,0.3,0.5,0.8 R:1,0,1,0

我试着写一条简单的线,给定R的值,当R为0时返回value,当R为1时返回NA。 我会这样写:

sapplydataframe[[R]],functionx ifelsex==1,NA,dataframe[[Value]][[indexOfx]]

有没有像我的虚幻函数的索引一样的东西可以用

对于循环来说,这项任务将非常容易使用,但我想用sapply有效地完成它

如果你要找的是别的

> df = data.frame(Value=c(0.2, 0.3, 0.5, 0.8),
                  R=c(1, 0, 1, 0))

> df$New = ifelse(df$R==1, df$Value, NA)

> df
  Value R New
1   0.2 1 0.2
2   0.3 0  NA
3   0.5 1 0.5
4   0.8 0 NA 
这项任务不需要sapply或ifelse。你可以使用数学运算符

dat <- data.frame(Value = c(0.2, 0.3, 0.5, 0.8),
                  R = c(1, 0, 1, 0))

transform(dat, NewCol = Value * NA ^ R)
#   Value R NewCol
# 1   0.2 1     NA
# 2   0.3 0    0.3
# 3   0.5 1     NA
# 4   0.8 0    0.8

事实上,我做了与你要求的相反的事情,如果你想插入NA,其中R=1,但是你得到了这个想法。