R:在if条件下应用并取消校准
如果数据帧的一列中有任何长度超过9个字符的字符串,我将尝试为要打印的数据编写一个测试 当使用apply时,我很困惑它是如何将nchar作为带有if语句的函数运行的。我以为会是这样的:R:在if条件下应用并取消校准,r,function,if-statement,apply,R,Function,If Statement,Apply,如果数据帧的一列中有任何长度超过9个字符的字符串,我将尝试为要打印的数据编写一个测试 当使用apply时,我很困惑它是如何将nchar作为带有if语句的函数运行的。我以为会是这样的: apply(df$a, 2, function(x) if nchar(x>9), nchar(x)) 但是我得到一个错误:在 这里缺少什么?对于单个列,测试是否有长度超过9的字符串 any(nchar(df$a) > 9) 如果你想检查每一列 sapply(df, function(x) any(
apply(df$a, 2, function(x) if nchar(x>9), nchar(x))
但是我得到一个错误:在
这里缺少什么?对于单个列,测试是否有长度超过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)
对于单个列,测试是否有长度超过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)
if(nchar(x>9)nchar(x))
if是一个函数nchar
是矢量化的,所以你只需要any(nchar(df$a)>9)
if(nchar(x>9)nchar(x))失去逗号,if
是一个函数nchar
是矢量化的,所以你只需要any(nchar(df$a)>9)
。查看行的选项:df$a[nchar(df$a)>9,]不起作用,我得到一个错误,因为维度数不正确。Gregor,有什么建议吗?查看行的选项:df$a[nchar(df$a)>9,]不起作用,我得到一个错误,因为维度数不正确。格雷戈,有什么建议吗?