list position of columns without specified characters

I want to create a list of vector of column which don't have special characters in columns in data frame.

so in my table I have n numbers of column and I want to have a index of columns doesn't have special characters.

so for example in below data frame the output should be c(3,5)

df <- data.frame(
  V1 = c('liam', 'kevin', 'steve'),
  v2 = c("--","--","--"),
  v3 = c(10, 4, 7),
  v4 = c("--","--","--"),
  v5=c(22,63,0.1))

i want a output of vector of index of columns doesn't have "--" in columns .
in this dataframe case output should be c(3,5)

Yes right all columns with first columns also c(1,3,5)

You can do this:

which(x = vapply(X = df,
                 FUN = \(column) !any(grepl(pattern = "--",
                                            x = column,
                                            fixed = TRUE)),
                 FUN.VALUE = logical(length = 1L)))

Edit (for explanation request by @str_guru)

It operates per column.

  1. grepl returns a logical vector containing boolean values indicating whether an element contains "--" or not.
  2. any operates on that, and even if a single one is TRUE, it returns TRUE.
  3. ! negates the output of any, and returns a vector of same length as number of columns.
  4. which calculates the positions of the columns.

Hope it helps.

PS: The \(column) notation to define function is pretty new in R. If you have older version, replace it with function(column)

how does it work ....??

Thanks for explaining , i just want to know how i can apply its giving error

df <- data.frame(

  • V1 = c('liam', 'kevin', 'steve'),
  • v2 = c("--","--","--"),
  • v3 = c(10, 4, 7),
  • v4 = c("--","--","--"),
  • v5=c(22,63,0.1))

which(x = vapply(X = df,

  •              FUN = (column) !any(grepl(pattern = "--",
    

Error: unexpected '!' in:
"which(x = vapply(X = df,
FUN = (column) !"

                                        x = column,

Error: unexpected ',' in " x = column,"

                                        fixed = TRUE)),

Error: unexpected ')' in " fixed = TRUE)"

             FUN.VALUE = logical(length = 1L)))

Error: unexpected ')' in " FUN.VALUE = logical(length = 1L))"

ok, got it function(column) this is working

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.