簡體   English   中英

矩陣R從數字轉換為csv中提供的字符

[英]matrix R convert from numeric to characters provided in csv

我是使用R的新手,並且學習如何使用forestplot函數創建森林圖。

我正在使用以下方法來標記森林圖的y軸:

labeltext = matrix()

當我使用這個:

labeltext = matrix(c(data$BCT, data$present), nrows=40, ncol=2, byrow=TRUE, dimnames=NULL)

我得到一個數值矩陣,R忽略了我提供的scv文件中的文本。

當我為一列創建矩陣時,它似乎起作用。 如何使用csv文件中的兩列標記y軸?

我想實現以下目標:

在此處輸入圖片說明

但應改為“ BCT”和“現在”,而不是“參考”,“事實”和“飲食”。

我想要一個以“ BCT”(第1列)和“當前”(第2列)作為y軸標簽的森林圖。 SMD是效果量度,upper_limit和lower_limit是CI。 請參閱下面的示例數據

這是代碼:

library(forestplot)
labeltext = matrix(c(data$BCT, data$present), nrow = 40, ncol = 2, byrow = TRUE, dimnames = NULL)
is_summary = FALSE
forestplot(labeltext,
           graph.pos = 2,
           mean = data$SMD,
           lower = data$"lower_limit",
           upper = data$"upper_limit",
           is.summary = is_summary, 
           xlab = "<-------Comparator Better---------------Main Intervention Better-------->",
           line.margin = unit (0.8, "cm"),
           lineheight = unit (0.5, "cm"),
           hrlz.lines =TRUE,
           col = fpColors(box = "darkred", lines = "grey", summary = "black"),
           graphwidth = unit (10, "cm"))


# Sample Input Data
data <- structure(list(
BCT = c("Adding objects to the environment (12.5) ", "Adding objects to the environment (12.5) ", "Action planning (1.4)", "Action planning (1.4)", "Body changes (12.6) ", "Body changes (12.6) ", "Behavioural practice/rehearsal (8.1)", "Behavioural practice/rehearsal (8.1)", "Credible source (9.2)", "Credible source (9.2)", "Demonstration of the behaviour (6.1) ", "Demonstration of the behaviour (6.1) ", "Feedback on behaviour (2.2) ", "Feedback on behaviour (2.2) ", "Goal setting (behaviour) (1.1)", "Goal setting (behaviour) (1.1)", "Graded tasks (8.7)", "Graded tasks (8.7)",  "Generalisation of target behaviour (8.6) ", "Generalisation of target behaviour (8.6) ", "Information about health consequences (5.1)", "Information about health consequences (5.1)", "Instruction on how to perform the behaviour (4.1)", "Instruction on how to perform the behaviour (4.1)", "Monitoring of behaviour by others without feedback (2.1)", "Monitoring of behaviour by others without feedback (2.1)",  "Monitoring of outcomes of behaviour without feedback (2.5)", 
"Monitoring of outcomes of behaviour without feedback (2.5)", "Problem solving (1.2) ", "Problem solving (1.2) ", "Social Comparison (6.2)", "Social Comparison (6.2)", "Self-monitoring of behaviour (2.3) ", "Self-monitoring of behaviour (2.3) ", "Self-monitoring of outcome(s) of behaviour (2.4) ", "Self-monitoring of outcome(s) of behaviour (2.4) ", "Social support (emotional) (3.3)", "Social support (emotional) (3.3)", "Social support (unspecified) (3.1) ", "Social support (unspecified) (3.1) "), 
present = c("present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present", "present ", "not present"), 
SMD = c(1.69, 0.42, 0.78, 0.4, 0.36, 0.57, 0.71, 0.4, 2.23, 0.31, 0.32, 0.63, 0.45, 0.58, 0.79, 0.26, 0.55, 0.56, 1.39, 0.4, 0.6, 0.46, 0.7, 0.34, 2.53, 0.47, 0.36, 0.62, 0.2, 0.7, 0.03, 0.66, 0.68, 0.47, 1.14, 0.4, 1.13, 0.44, 0.67, 0.52), 
lower_limit = c(-1.49, 0.22, -0.4, 0.06, 0.08, -0.33, -0.34, -0.04, 0.15, 0.2, 0.14, -0.4, -0.25, -0.26, -0.19, 0.11, -0.66, 0.23, -0.68, 0.19, -0.35, 0.11, -0.46, 0.15, 1.36, 0.05, -0.07, -0.2, -0.01, -0.18, -0.42, -0.14, -0.4, 0.06, -0.84, 0.16, -1.47, 0.24, -0.93, 0.27), 
upper_limit = c(4.87, 0.62, 1.95, 0.74, 0.65, 1.48, 1.75, 0.84, 4.32, 0.42, 0.51, 1.67, 1.15, 1.43, 1.77, 0.41, 1.77, 0.89, 3.46, 0.6, 1.55, 0.81, 1.87, 0.53, 3.7, 0.89, 0.78, 1.43, 0.41, 1.58, 0.47, 1.46, 1.77, 0.88, 3.12, 0.64, 3.72, 0.65, 2.28, 0.78)), 
.Names = c("BCT", "present", "SMD", "lower_limit", "upper_limit"), 
row.names = c(NA, -40L), class = "data.frame")

您可能已將角色數據導入為因素。 當您使用c()matrix()類的簡化函數來重整因子時,由於矩陣不能包含因子,因此它們會轉換為數值。 更仔細的轉換是

labeltext = as.matrix(data.frame(data$BCT, data$present))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM