变量的类型(列表)无效

问题描述 投票:0回答:1

这两个data.frame有什么区别?为什么我可以在其中一个上运行

swimmer_plot
而不能在另一个上运行?

当我在

swimmer_plot
data.frame 上运行
ClinicalTrial.Arm
时,它工作正常。如果我替换为
fdd
data.frame,则会出现错误。

我尝试将

fdd
的结构与
ClinicalTrial.Arm
完全相同。绘图只需要前三列...不明白为什么这不起作用。

> str(ClinicalTrial.Arm)
'data.frame':   53 obs. of  6 variables:
 $ id                 : num  1 2 2 2 3 3 4 5 5 6 ...
 $ Arm                : chr  "Arm A" "Arm A" "Off Treatment" "Arm A" ...
 $ End_trt            : num  3.26 2 10 15.45 5 ...
 $ Continued_treatment: num  NA NA NA NA NA NA NA NA NA NA ...
 $ Sex                : chr  "F" "F" "F" "F" ...
 $ Age                : chr  ">=65" "<65" "<65" "<65" ...

> str(fdd)
tibble [38 × 3] (S3: tbl_df/tbl/data.frame)
 $ id     : num [1:38] 1 1 1 2 2 2 2 3 3 3 ...
 $ Arm    : chr [1:38] "bloodD15" "bloodsurg" "surgery" "bloodD15" ...
 $ End_trt: num [1:38] 14 28 29 15 29 29 57 14 28 28 ...

> swimmer_plot(df=fdd,id='id',end='End_trt',name_fill='Arm',col="black",id_order='Arm')

model.frame.default(formula = df[, end] ~ df[, id]) 中的错误: 变量“df[, end]”的类型(列表)无效

list dataframe ggplot2
1个回答
1
投票

您需要使用

fdd
as.data.frame
(小标题)转换为数据框。然后,您就可以正常绘图了。

library(swimplot)

fdd_df <- as.data.frame(fdd)

swimmer_plot(
  df = fdd_df,
  id = 'id',
  end = 'End_trt',
  name_fill = 'Arm',
  col = "black",
  id_order = 'Arm'
)

输出

enter image description here

数据

fdd <-
  structure(
    list(
      id = c(1, 1, 1, 2),
      Arm = c("bloodD15", "bloodsurg",
              "surgery", "bloodD15"),
      End_trt = c(14, 18, 29, 15)
    ),
    class = c("tbl_df",
              "tbl", "data.frame"),
    row.names = c(NA,-4L)
  )
© www.soinside.com 2019 - 2024. All rights reserved.