R中的if,else-if问题

时间:2018-07-26 09:48:01

标签: r if-statement

所以我一直在做一个项目,在其中我使用多个if-else-if条件,我所面临的问题是,只要满足第一个条件,整个列本身就会被该值填充,并且不检查其他条件。
这是我正在使用的代码片段:

    index += 1
    with self.env.begin(write=False) as txn:
        img_key = 'image-%09d' % index
        imgbuf = txn.get(img_key.encode())
        #print(type(imgbuf))
        buf = six.BytesIO()
        buf.write(imgbuf)
        buf.seek(0)
        try:    
            img = Image.open(buf).convert('L')
        except IOError:
            print('Corrupted image for %d' % index)
            return self[index + 1]

        if self.transform is not None:
            img = self.transform(img)

        label_key = 'label-%09d' % index
        label = str(txn.get(label_key))

        if self.target_transform is not None:
            label = self.target_transform(label)

因此,即使满足第一个条件,整个过程列也会被填充为'01)SOLD'

1 个答案:

答案 0 :(得分:1)

快速浏览一下如何使用嵌套的ifelse()

df <- data.frame(status = c("S104", "894T", "899X", "B67", "VXT", "ABC"))

  status
1   S104
2   894T
3   899X
4    B67
5    VXT
6    ABC

df$process <- with(df, ifelse(substr(status, 1, 1) == "S", "SOLD",
                              ifelse(substr(status, 1, 3) %in% c("894"), "SIF-SETTLED",
                                     ifelse(substr(status, 1, 3) %in% c("899"), "SIF-PENDING",
                                            ifelse(substr(status, 1, 1) == "B", "BANKRUPTCY",
                                                   ifelse(substr(status, 1, 1) == "V", "PRE-BANKRUPTCY", "OTHER"))))))

  status        process
1   S104           Sold
2   894T    SIF-SETTLED
3   899X    SIF-PENDING
4    B67     BANKRUPTCY
5    VXT PRE-BANKRUPTCY
6    ABC          OTHER

您需要将所有相关数字包括在%in%条件的向量中,我太懒了:)