全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
11362 5
2016-01-14
悬赏 20 个论坛币 已解决
我又来问大家了,我写了一个函数,判断向量x的各个分量的符号,但分量中可能含有NA。我希望NA就返回NA好了。

但我写的if else识别不了,错误提示是:要TRUE/FALSE值的地方不可以用缺少值

怎么办呢?谢谢

f.try=function(x){

tmp1=c(999)

for(i in 1:length(x)){

if(x>0){tmp1=c(tmp1,1)}else{if(x<=0){tmp1=c(tmp1,0)}else{tmp1=c(tmp1,NA)}};tmp1};

tmp1}

这是我写的

谢谢各位

如果多人想出了多种办法,也会有奖励!

最佳答案

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-1-14 21:02:48
f.try <- function(x){
  tmp1 <- c(999)
  for(i in x){
    if(is.na(i))
      tmp1 <- c(tmp1, NA)
    else if(i > 0)
      tmp1 <- c(tmp1,1)
    else
      tmp1 <- c(tmp1,0)
  }
  tmp1
}


不过,应该不用这么麻烦
c(999, ifelse(x>0,1,0))  就可以
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 14:07:11
R有个函数,叫is.na
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 14:09:26
另外,系统内置有函数的:
> sign(1)
[1] 1
> sign(-1)
[1] -1
> sign(0)
[1] 0
> sign(NA)
[1] NA
> sign(3)
[1] 1
> sign(-3)
[1] -1
> sign(1e-100)
[1] 1
> sign(1e-1000)
[1] 0
> sign(NA)
[1] NA
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 23:17:25
swyggq 发表于 2016-5-20 14:07
R有个函数,叫is.na
谢谢您,我已经解决啦,就是用这个
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 23:17:55
swyggq 发表于 2016-5-20 14:09
另外,系统内置有函数的:
> sign(1)
[1] 1
哇,打开了新世界的大门
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群