“条件的长度 > 1,仅使用第一个元素”错误

Posted

技术标签:

【中文标题】“条件的长度 > 1,仅使用第一个元素”错误【英文标题】:"the condition has length > 1 and only the first element will be used" error 【发布时间】:2014-11-14 16:35:48 【问题描述】:

我的 f 语句有问题,因为它返回给我这个错误消息:“条件的长度 > 1 并且只使用第一个元素” 我有一个名为 data.summary 的数据框,我想根据数据框的另一个变量创建两个新变量 vol.upvol.down。 这是我的脚本代码:

data.summary <- call.dat12[,c("Dur...ms.", "Handset.Manufacturer",
                          "Src.Dst.Sig.Vol..Bytes.", "Dst.Src.Sig.Vol..Bytes.",
                          "group", "Src.Node.Type", "Dst.Node.Type")]

if (data.summary$Src.Node.Type == "eNodeB")
  data.summary$vol.up <- data.summary$Src.Dst.Sig.Vol..Bytes. 
  data.summary$vol.down <- data.summary$Dst.Src.Sig.Vol..Bytes.
 else 
  data.summary$vol.up <- data.summary$Dst.Src.Sig.Vol..Bytes. 
  data.summary$vol.down <- data.summary$Src.Dst.Sig.Vol..Bytes.

我真的不明白为什么 f 语句不适用于 vector ? 提前致谢

【问题讨论】:

这些问题对你有帮助吗***.com/search?q=%22the+condition+has+length+%3E+1%22 不是真的,我已经看过了 data.summary$Src.Node.Type 将是一个向量,其项目数与data.summary 中的行数相同。您可能需要两个不同的 ifelse 语句。 【参考方案1】:

您的比较是一个具有多个元素的 TRUE/FALSE 向量,为了使 if - else 起作用,通常需要一个长度为 1 的逻辑向量,而不是 NA。也许你需要的是向量化条件:

ind <- data.summary$Src.Node.Type == "eNodeB"
data.summary$vol.up<- NA
data.summary$vol.down<- NA
#for true
data.summary$vol.up[ind]<- data.summary$Src.Dst.Sig.Vol..Bytes.[ind]
data.summary$vol.down[ind] <- data.summary$Dst.Src.Sig.Vol..Bytes.[ind]
data.summary
# for false
data.summary$vol.up[!ind]<- data.summary$Dst.Src.Sig.Vol..Bytes.[!ind]
data.summary$vol.down[!ind] <- data.summary$Src.Dst.Sig.Vol..Bytes.[!ind]
data.summary 

【讨论】:

这不正确。从?`if` 开始,条件定义为非NA 的长度为1 的逻辑向量。接受长度大于 1 的条件并发出警告,但仅使用第一个元素。如果可能,其他类型被强制为逻辑,忽略任何类。 非常感谢,它的工作完美。但我不明白为什么“if else”不起作用?可以举个例子吗,谢谢。 试试这个:x=5; if (x==5) print("正确!") else print("是假的"); #作品; x=c(3,5); if (x==5) print("正确!") else print("是假的"); #不正确!; for(i in seq_along(x)) if (x[i]==5) print("correct!") else print("is false") #works;

以上是关于“条件的长度 > 1,仅使用第一个元素”错误的主要内容,如果未能解决你的问题,请参考以下文章

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理