很抱歉,如果这个标题令人困惑,但我无法弄清楚如何说出这个问题,这可能就是为什么我似乎无法找到合适的功能。
基本上,我说有这个:
articles
我想用237
向量中的相应索引替换DF $ x中的所有值。如我所知,我希望1
成为278
而2
成为for (i in 1:length(articles)) {
DF[DF$x==articles[i], 1] <- ind[i]
}
等。
我已经构建了一个执行它的for循环,但是我的真实data.frame要大得多,我觉得必须有一个更有效的方法来实现它。这是我的for循环,以便您可以看到我想要的最终结果:
replace
我查看了public double discrim (double a, double b, double c)
{
return (b*b)-(4*a*c);
}
public int numRoots (double a, double b, double c)
{
double d = discrim (a,b,c);
if (d>0)
return 2;
else if (d<0)
return 0;
else
return 1;
}
函数,但似乎没有这样做。而且,实际上,这是一个data.table(来自{data.table}包),而不是data.frame。如果有必要,我显然可以将它转换为data.frame,但是如果有一种更有效的方法可以在data.table包中执行此操作,那将是非常棒的。
非常感谢。 塞特
答案 0 :(得分:2)
你可以尝试:
DF$x <- as.numeric(as.factor(DF$x))
DF
x y
1 1 0.10610802
2 1 1.71933883
3 2 0.01788855
4 2 0.83659415
5 2 0.43162867
6 3 0.68937628
7 4 -1.47557905
8 4 -0.24103146
9 4 0.14286818
答案 1 :(得分:1)
我愿意:
articles <- c(237, 278, 354, 600)
DF <- data.frame(x=c(237, 237, 278, 278, 278, 354, 600, 600, 600),
y=rnorm(9))
DF$x <- match(DF$x, articles)
因为在这种情况下,ind只是匹配时获得的值。