【发布时间】:2013-10-09 14:23:56
【问题描述】:
我正在尝试使用此代码的矢量化替代方案:
x=read.table("1.txt")
for(i in 1:nrowx)
{
if(x[i,1]>x[i,2])
{
temp=x[i,1]
x[i,1]=x[i,2]
x[i,2]=temp
x[i,3]=(x[i,3]*(-1))
}
}
我尝试使用变换功能:
x <- transform(x,
x[[1]] <- ifelse(x[[1]]>x[[2]], x[[2]], x[[1]]),
x[[2]] <- ifelse(x[[1]]>x[[2]], x[[1]], x[[2]]),
x[[3]] <- ifelse(x[[1]]>x[[2]], -x[[3]], x[[3]]))
但是没有成功。返回原始文件,不执行任何操作。
在 x 中读取文件的几行:
"X1" "X2" "X3"
"1" 10 4 1440
"2" 10 4 3765
"3" 10 22 523
"4" 10 295 730
"5" 10 295 1599
"6" 10 584 1872
"7" 10 403 1872
"8" 10 403 1872
"9" 10 281 554
"10" 10 123 554
请帮忙。谢谢!
【问题讨论】:
-
transform的语法错误。该函数像任何其他函数一样接受参数,因此第一个参数之后的元素应该采用foo = bar的形式,其中bar是将包含在返回对象中的对象/结果,foo是其名称它在返回的对象中分配。也许你在想within()?该函数的语法与您显示的相似。此外,如果您没有引用x*by name. Each of the three statements you include could all be done outside oftransform()` 中的任何对象,则不需要transform。
标签: r loops transform vectorization