R Apply()函数而不是需要值

时间:2017-04-06 15:59:08

标签: r

我使用for循环(效果很好)用NA随机替换数据集每行中的两个值(这些值的索引在每一行都随机变化)。
现在我想用apply()做同样的事情。
我尝试了这个代码(其他许多东西都返回NA):

my_fun<-function(x){if (j %in% sample(1:ncol(y),2)) {x[j]<-NA}}
apply(y,1,my_fun)

但它不起作用(它不会对初始数据集进行任何更改) 问题是找不到对象j。 j应该是列的编号。 有人有想法吗?

1 个答案:

答案 0 :(得分:0)

根据你的描述,我认为你想要:

my_fun <- function(x) { x[sample(1:length(x), 2)] <- NA; x }
apply(y, 1, my_fun) # or
t(apply(y, 1, my_fun))

测试功能:

set.seed(42)
y <- matrix(1:60, 10)
y
t(apply(y, 1, my_fun))
# > t(apply(y, 1, my_fun))
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]    1   11   21   31   NA   NA
# [2,]    2   NA   22   32   NA   52
# [3,]    3   13   NA   NA   43   53
# [4,]   NA   14   24   34   NA   54
# [5,]    5   15   25   NA   45   NA
# [6,]    6   16   NA   NA   46   56
# [7,]    7   NA   27   37   47   NA
# [8,]    8   18   NA   38   NA   58
# [9,]   NA   19   29   39   49   NA
# [10,]  10   20   NA   40   50   NA