这两个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]”的类型(列表)无效
您需要使用
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'
)
输出
数据
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)
)