如何在列依赖的情况下使用Apply函数?

时间:2015-06-19 09:06:20

标签: r

我正在尝试在700k记录的df中填充一个新列,并且它对于for循环来说太慢了,因此想要使用apply函数。不熟悉它和下面是我的尝试,但这不起作用。请帮忙

myfunc <- function(a,b,c,d) {if (a=="xyz" & b==11) {c=d}}
dataf[,'target'] <- apply(dataf, 1, function(dataf) myfunc(dataf[,'col1'],dataf[,'col2'],dataf[,'target'],dataf[,'col3']))

添加更多说明 -

我有什么:

a   b   c   d
x   2       p
x   2       p
x   2       p
xyz 11      p
xyz 11      p
xyz 2       p
y   2       p
y   2       p
y   2       p

我想要实现的目标:

a   b   c   d
x   2       p
x   2       p
x   2       p
xyz 11  p   p
xyz 11  p   p
xyz 2       p
y   2       p
y   2       p
y   2       p

1 个答案:

答案 0 :(得分:2)

鉴于你的OP,我猜你想要这个?

library(data.table)
setDT(dataf)[a == "xyz" & b == 11, c := d]

输出:

     a  b d  c
1:   x  2 p NA
2:   x  2 p NA
3:   x  2 p NA
4: xyz 11 p  p
5: xyz 11 p  p
6: xyz  2 p NA
7:   y  2 p NA
8:   y  2 p NA
9:   y  2 p NA

我强烈建议阅读tutorial data.table,这是超快的,可以用于很多不同的事情。在这个网站上,您会发现更多articles。我会全部阅读,你需要所有这些,它会对你有很大的帮助!!