【发布时间】:2014-01-02 13:10:44
【问题描述】:
我想根据 number+W 为 number*2 的规则计算我的数据。
dat="1W 16 2W 16
1 16 2W 0
1W 16 16 0
4 64 64 0"
data=read.table(text=dat,header=F)
apply(data,c(1,2),function(y){
if(grep(pattern="W",y) ==1 )
{ gsub("W",paste("*",2,sep=""),y)->s;
eval(parse(text=s));
} else
{y <- y }
})
但我得到了输出:
if (grep(pattern = "W", y) == 1) { 中的错误:参数长度为零
为什么?如果 y 匹配 "W" 则值为 1,我的代码有什么问题?
【问题讨论】:
-
正如 SimonO101 指出的那样,你工作太努力了。首先,
y<-y是浪费时间,所以只需else y就足够了。接下来,不清楚为什么要以字符串开头。我强烈建议返回并修复创建数字和 "numberW" 混合的任何代码。哎呀,你不妨使用sfsmisc:AsciiToInt(),用50替换87的实例,然后转换回来:-)
标签: r