【问题标题】:Change type from AsIs to list in R dataframe将类型从 AsIs 更改为在 R 数据框中列出
【发布时间】:2022-11-16 08:21:11
【问题描述】:

我正在尝试在 R 中创建一个如下所示的数据框:

    group   numbers
1    1     [1,2,3,4,5]
2    2     [8,9,10,11]

我的处理方式如下:

group = c(1:2)
numbers = I(list((1:5),(8:11)))
df = data.frame(group,numbers)
class(df$numbers)

但是,当我获得 df$numbers 类时,我得到“AsIs”。这会在以后引起问题,因为我在 SparkR 中使用它,而 Spark 无法处理“AsIs”类型。对于我的用例,我需要将类设置为“列表”,但是当我执行 as.list() 时,它仍然不会更改类型。将组类保持为“整数”会很有帮助,但我认为将其转换为整数仍然有效,如果它还不是整数的话。

有没有另一种方法可以避免 AsIs 的这个问题并使数据框如图所示?

【问题讨论】:

    标签: r dataframe sparkr


    【解决方案1】:

    你可以unclass这些数字:

    df$numbers <- unclass(df$numbers)
    
    df
      rank       numbers
    1    1 1, 2, 3, 4, 5
    2    2  8, 9, 10, 11
    
    str(df)
    'data.frame':   2 obs. of  2 variables:
     $ rank   : int  1 2
     $ numbers:List of 2
      ..$ : int  1 2 3 4 5
      ..$ : int  8 9 10 11
    

    或者不使用抑制函数I

    df <- data.frame(group = 1:2)
    df$numbers <- list((1:5),(8:11))
    
     df
      group       numbers
    1     1 1, 2, 3, 4, 5
    2     2  8, 9, 10, 11
    

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2015-11-23
      • 2013-11-09
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多