gpt4 book ai didi

r - R中的if和&语句

转载 作者:行者123 更新时间:2023-12-04 20:08:11 25 4
gpt4 key购买 nike

我有一个包含 4 列的 data.frame:

> bb
V1 V2 V3 V4
1 ARFGEF2 ARFGEF2 ARFGEF2 <NA>
2 SFRS5 <NA> SRSF5 <NA>
3 ENSG00000215104 <NA> <NA> CHMP1B2P
4 EDF1 EDF1 EDF1 <NA>
5 LOC100133678 <NA> <NA> <NA>
6 CD3G CD3G - <NA>
7 GNAI2 GNAI2 GNAI2 <NA>

我想根据第 2、3 和 4 列上的值创建一个新列。我想做的是:
bb[,2]NAbb[,3]有一个值然后 bb[,5]将是 bb[,3] 的值, 如果 bb[,2]NAbb[,3]NAdf[,4]有一个值然后 bb[,5]将是 bb[,4] 的值, 否则 bb[,5]将是 df[,1] .这是预期的输出:
> bb
V1 V2 V3 V4 V5
1 ARFGEF2 ARFGEF2 ARFGEF2 <NA> ARFGEF2
2 SFRS5 <NA> SRSF5 <NA> SRSF5
3 ENSG00000215104 <NA> <NA> CHMP1B2P CHMP1B2P
4 EDF1 EDF1 EDF1 <NA> EDF1
5 LOC100133678 <NA> <NA> <NA> <NA>
6 CD3G CD3G - <NA> -
7 GNAI2 GNAI2 GNAI2 <NA> GNAI2

我试过这段代码,但它不起作用:
> for (i in 1:nrow(bb)){
if (is.na(bb[i,2] & !(is.na(bb[i,3])))) {bb[i,5] <- as.character(bb[i,3])}
else if (is.na(bb[i,2]) & !(is.na(bb[i,4]))) {bb[i,5] <- as.character(bb[i,4])}
else { bb[i,5] <- bb[i,1]}
}
Warning messages:
1: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
2: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
3: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
4: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
5: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
6: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors
7: In Ops.factor(bb[i, 2], !(is.na(bb[i, 3]))) :
& not meaningful for factors

我该如何使用 &if陈述?这是一个更长的 data.frame 的示例,我想在其中创建一个新列 ( V5 ) 的值 V1如果 V2不是 NA .如果是 V2成为 NA ,首先我要检查是否 V3有一个值,如果是 TRUE然后 V5将是 V3值,第二,如果 V3NAV4有一个值然后 V5将是 V4 的值, 最后如果 V3V4NA然后 V5将是 V1 .

非常感谢

最佳答案

您的 for循环应该使用 &&而不是 & .第一个 is.na 处也缺少括号.但是试试 ifelse功能,沿线的东西

bb[,5] <- ifelse(is.na(bb[,2]) & !is.na(bb[,3]), 
bb[,3],
ifelse(is.na(bb[,2]) & !is.na(bb[,4]), bb[,4], bb[,1])
)

(未经测试)

关于r - R中的if和&语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com