检查字符是否在数据框中
Check if a character is in data frame
我正在寻找一种简单的方法来检查 R 数据框中的值是否有逗号(或与此相关的任何字符)。
假设我有以下数据框:
df <- data.frame(A = c("apple","orange", "banana","strawberries"),
B = c(23,12,10,15),
C = c("2,53", "1.35","0,25","1,44"))
如果我知道其中有逗号的列,我会使用它:
which(grepl(",",df$C))
length(which(grepl(",",df$C)))
但是,我想要上面的输出但不指定我的数据框的列。
有什么建议吗?
您只需浏览所有三列; sapply
在这里工作:
sapply(df, grep, pattern = ",")
##output:
# $A
# integer(0)
#
# $B
# integer(0)
#
# $C
# [1] 1 3 4
要获得 length
你可以这样做:
sapply(sapply(df, grep, pattern = ","), length)
# A B C D
# 0 0 3 0
更容易掌握的解决方案;首先,将您的数据框转换为矢量。
df2vector <- as.vector(t(df))
df2vector
# [1] "apple" "23" "2,53" "orange" "12"
# [6] "1.35" "banana" "10" "0,25" "strawberries"
# [11] "15" "1,44"
然后用你的方法。
length(which(grepl(",",df2vector)))
# [1] 3
我正在寻找一种简单的方法来检查 R 数据框中的值是否有逗号(或与此相关的任何字符)。
假设我有以下数据框:
df <- data.frame(A = c("apple","orange", "banana","strawberries"),
B = c(23,12,10,15),
C = c("2,53", "1.35","0,25","1,44"))
如果我知道其中有逗号的列,我会使用它:
which(grepl(",",df$C))
length(which(grepl(",",df$C)))
但是,我想要上面的输出但不指定我的数据框的列。
有什么建议吗?
您只需浏览所有三列; sapply
在这里工作:
sapply(df, grep, pattern = ",")
##output:
# $A
# integer(0)
#
# $B
# integer(0)
#
# $C
# [1] 1 3 4
要获得 length
你可以这样做:
sapply(sapply(df, grep, pattern = ","), length)
# A B C D
# 0 0 3 0
更容易掌握的解决方案;首先,将您的数据框转换为矢量。
df2vector <- as.vector(t(df))
df2vector
# [1] "apple" "23" "2,53" "orange" "12"
# [6] "1.35" "banana" "10" "0,25" "strawberries"
# [11] "15" "1,44"
然后用你的方法。
length(which(grepl(",",df2vector)))
# [1] 3