【问题标题】:R: apply and nchar with if conditionR:使用 if 条件应用和 nchar
【发布时间】:2015-06-24 23:20:49
【问题描述】:

如果数据框的一列中有任何长度超过 9 个字符的字符串,我正在尝试为要打印的数据编写测试。

在使用 apply 时,我对它如何将 nchar 作为带有 if 语句的函数运行感到困惑。我以为会是这样的:

apply(df$a, 2, function(x) if nchar(x>9), nchar(x))

但是我得到一个错误:意外符号...

我在这里错过了什么?

【问题讨论】:

  • if(nchar(x>9) nchar(x)) 去掉逗号,if 是一个函数
  • nchar 是矢量化的,所以你只需要any(nchar(df$a) > 9)

标签: r function if-statement apply


【解决方案1】:

对于单个列,测试是否有任何长度超过 9 的字符串

any(nchar(df$a) > 9)

如果你想检查每一列

sapply(df, function(x) any(nchar(x) > 9))

如果您想查看单个列的行

df$a[nchar(df$a) > 9]  # a values only
df[nchar(df$a) > 9, ]  # entire rows

测试数据:

df = data.frame(a = c("alsdfsaj", "alksdjfaklsjfaskjf", "aklsdj"),
                b = c("b", "bbb", "bbbb"),
                stringsAsFactors = F)

【讨论】:

  • 查看行的选项:df$a[nchar(df$a) > 9, ] 不起作用,我收到错误的维度数。格雷戈尔,有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2016-03-08
  • 2012-06-29
相关资源
最近更新 更多