如何在R中的数据框中获取列表的最大值

时间:2020-04-16 11:51:57

标签: r string list dataframe stringr

我正在尝试创建一个新列,该列为我获取数据框中列表的最大值。我想知道如何从df $ value列创建称为maxvalue的列,即我想在该列中获取该列表的最大值。

  x <- c( "000010011100011111001111111100", "011110", "0000000")
  y<- c(1, 2,3)
 df<- data.frame(x,y)
 library(stringr)
 df$value <- strsplit(df$x, "[^1]+", perl=TRUE)
  # expected output  ( I have tried the following)
 df$maxvalue<- max(df$value) 
  df$maxvalue
   8 
   4
   0

3 个答案:

答案 0 :(得分:5)

这应该可以解决问题

df$value <- lapply(lapply(strsplit(as.character(df$x),"[^1]+"), nchar),max)

输出:

> df
                               x y value
1 000010011100011111001111111100 1     8
2                         011110 2     4
3                        0000000 3     0

答案 1 :(得分:1)

@Daniel O的逻辑的简化版本:

df$value <- sapply(strsplit(as.character(df$x),"[^1]+"), function(x){max(nchar(x))})

答案 2 :(得分:1)

我们还可以使用rawToCharcharToRaw

sapply(as.character(df$x), function(x) 
      with(rle(charToRaw(x)), max(lengths[as.character(values) == 31])))