I want to subset glioma samples as scf.glioma dataframe from the scf dataframe by removing any columns that begin with NB, which is saved as scf.control. I tried to use the select function in the dplyr library to filter out any scf.control samples from the scf dataframe but it produced an error : argument is not interpretable as logical.
library(dplyr)
scf.ann <- ann[ann$Gene.symbol=="KITLG",]
scf <- dat.filtered[rownames(dat.filtered) %in% rownames(scf.ann),]
scf.control <- scf %>% select(starts_with("NB"))
scf.glioma <- select(scf, -one_of(colnames(scf.control)) %>% colnames(scf))
Error: argument is not interpretable as logical Run
rlang::last_error() to see where the error occurred. In addition:
Warning message: In if (do.NULL) NULL else if (nc > 0L) paste0(prefix,
seq_len(nc)) else character() : the condition has length > 1 and
only the first element will be used
scf.glioma <- as.numeric(unlist(scf.glioma))
> dput(scf)
structure(list(NB_GSM97800 = c(116.2, 5.5, 2.8, 1867.7), NB_GSM97803 = c(72.8,
29, 2.7, 1321.4), NB_GSM97804 = c(89.5, 18.1, 5, 1275.8), NB_GSM97805 = c(58.6,
27.4, 4.4, 1226), NB_GSM97807 = c(71, 28.4, 0.8, 1431.1), NB_GSM97809 = c(62.7,
39.5, 1, 863.2), NB_GSM97811 = c(97.5, 82.7, 5.8, 1458.4), NB_GSM97812 = c(116.9,
80, 5.4, 1627.5), NB_GSM97816 = c(9.8, 10.5, 3.6, 470.5), NB_GSM97817 = c(148.9,
18.8, 10.1, 1224.8), NB_GSM97820 = c(121.1, 76.3, 5.6, 1192.6
), NB_GSM97825 = c(128, 83.1, 2.5, 1724.6), NB_GSM97827 = c(157.6,
101.2, 2.5, 1927.2), NB_GSM97828 = c(60.3, 5.8, 2.4, 425.2),
NB_GSM97833 = c(111.6, 84.3, 1.8, 1346.4), NB_GSM97834 = c(62.1,
29.1, 1.7, 1443.2), NB_GSM97840 = c(67, 84.1, 2.3, 1126.4
), NB_GSM97846 = c(131.3, 45.3, 1.7, 1682.3), NB_GSM97848 = c(116.3,
28.7, 11.5, 1516), NB_GSM97849 = c(141.7, 105.6, 1.7, 1854.9
), NB_GSM97850 = c(97.3, 62.6, 6, 1272.7), NB_GSM97853 = c(84.3,
89, 42.1, 1551.1), NB_GSM97855 = c(56.6, 7, 5.2, 559.8),
II_GSM97878 = c(88.7, 2.9, 14.7, 858), II_GSM97913 = c(184.4,
73.5, 2.9, 1223.3), II_GSM97932 = c(81.6, 39.8, 42.8, 1802.5
), II_GSM97939 = c(61.5, 11.6, 3.9, 462.4), II_GSM97951 = c(67.2,
37.8, 3.5, 1165.8), II_GSM97957 = c(101.8, 5.3, 2.3, 669.1
), II_GSM97972 = c(75.4, 30.7, 2.1, 1041.2), III_GSM97793 = c(203.2,
44.2, 3.6, 2168.4), III_GSM97795 = c(90, 84.1, 3.3, 1338.6
), III_GSM97802 = c(109.2, 3.3, 2.3, 206.5), III_GSM97810 = c(130.3,
90.1, 1.9, 2442.2), III_GSM97815 = c(154, 46.1, 4.1, 1500.2
), III_GSM97837 = c(164.6, 54.1, 2.6, 1630.4), III_GSM97843 = c(188.7,
142.1, 2.5, 1523.7), III_GSM97890 = c(60.2, 7, 5.2, 566.8
), III_GSM97899 = c(127.8, 11.1, 2, 1796.6), III_GSM97910 = c(28,
2.6, 1.8, 1433.3), III_GSM97916 = c(138.6, 79.3, 1.3, 1326.7
), III_GSM97920 = c(16.7, 13.9, 2.1, 495.1), III_GSM97921 = c(181.6,
107.1, 3.5, 2362.4), III_GSM97927 = c(81.6, 66, 1, 1127),
III_GSM97937 = c(78.6, 51.4, 1.2, 1382), III_GSM97941 = c(177.5,
52.1, 71.8, 1301.9), III_GSM97943 = c(70.1, 41.7, 3.5, 1822.6
), III_GSM97958 = c(167.8, 56.4, 10.2, 1789.2), III_GSM97960 = c(49.6,
36.9, 4.2, 1210), IV_GSM97794 = c(186.2, 152.3, 6, 1671.8
), IV_GSM97796 = c(189.9, 122.4, 3.2, 1539.2), IV_GSM97797 = c(196.6,
100.8, 1.1, 963.7), IV_GSM97798 = c(367.8, 308.4, 1.4, 2131
), IV_GSM97801 = c(132.1, 12, 3.1, 955.1), IV_GSM97806 = c(191.8,
95.6, 4.8, 1085.6), IV_GSM97808 = c(145.1, 151.5, 21, 2052.2
), IV_GSM97813 = c(146.6, 89.3, 1, 1103.9), IV_GSM97814 = c(224.4,
78.6, 2.9, 1890.6), IV_GSM97818 = c(40.7, 11.6, 1.7, 1737.7
), IV_GSM97819 = c(200.9, 106.9, 2, 1504.8), IV_GSM97821 = c(152.6,
94, 2.5, 1180), IV_GSM97826 = c(67.6, 47.4, 22.7, 810.3),
IV_GSM97829 = c(103.1, 61.5, 1.4, 1609.4), IV_GSM97832 = c(76.1,
28, 2.2, 1281.6), IV_GSM97836 = c(133.3, 43.1, 2.5, 1257.7
), IV_GSM97839 = c(121.2, 73.9, 1.8, 1756.5), IV_GSM97844 = c(135,
82.5, 6.6, 1624.8), IV_GSM97847 = c(137.7, 41.4, 5.7, 1080.4
), IV_GSM97851 = c(151.8, 140, 1.4, 1668.9), IV_GSM97852 = c(96.4,
118.2, 4.3, 830.6), IV_GSM97856 = c(160, 44.8, 19.4, 1824.3
), IV_GSM97858 = c(102.4, 9.3, 4.5, 1254.7), IV_GSM97859 = c(118.5,
27.8, 3.7, 577.7), IV_GSM97861 = c(181.2, 119.8, 4.4, 2091.7
), IV_GSM97863 = c(168.9, 77.9, 2.2, 1578.3), IV_GSM97869 = c(99.1,
67.5, 2.9, 984.3), IV_GSM97870 = c(81.9, 52.5, 4.3, 914.6
), IV_GSM97871 = c(142.6, 132.3, 2.6, 1445.3), IV_GSM97877 = c(85.6,
65.9, 3.4, 1508.7), IV_GSM97879 = c(56.8, 13.9, 1.3, 1456.5
), IV_GSM97882 = c(153.8, 91.6, 2, 876.2), IV_GSM97885 = c(81.1,
106.5, 1, 1240.7), IV_GSM97886 = c(66.1, 13.9, 5.4, 780.6
), IV_GSM97887 = c(111.4, 3.7, 4.4, 609.2), IV_GSM97888 = c(111.8,
34.3, 3.7, 804.8), IV_GSM97889 = c(121, 78.6, 1.2, 1204.5
), IV_GSM97891 = c(118.4, 8, 4.2, 1047), IV_GSM97892 = c(141.5,
103, 40.1, 1186.8), IV_GSM97893 = c(145.6, 49.8, 2.6, 2324
), IV_GSM97894 = c(143.6, 111.9, 8.1, 2007.1), IV_GSM97896 = c(118.3,
41.4, 8.4, 1503.7), IV_GSM97898 = c(190.8, 178.3, 2.9, 2856.6
), IV_GSM97903 = c(159.6, 45.2, 4.3, 1174.1), IV_GSM97905 = c(97.9,
38.6, 3.7, 1422), IV_GSM97906 = c(110.4, 102, 1.5, 1360.6
), IV_GSM97908 = c(76.7, 15.4, 4.4, 2207.8), IV_GSM97912 = c(43.6,
6.8, 2.2, 778.1), IV_GSM97914 = c(95.3, 3.9, 1, 905.6), IV_GSM97915 = c(193.9,
119.6, 5.5, 1666.4), IV_GSM97917 = c(802.8, 552, 3.5, 3560.7
), IV_GSM97918 = c(131.5, 80.8, 3.1, 1964.2), IV_GSM97919 = c(262.6,
254.8, 4.6, 1556), IV_GSM97922 = c(138.6, 67.5, 3.7, 770.5
), IV_GSM97924 = c(99.8, 12.3, 4.1, 879), IV_GSM97926 = c(102.5,
14.3, 1.8, 1142.9), IV_GSM97930 = c(70.6, 21.5, 4, 1740.5
), IV_GSM97931 = c(130.9, 41.7, 23.8, 558.8), IV_GSM97935 = c(121.6,
53.8, 1.6, 1180.3), IV_GSM97936 = c(121.8, 79.1, 2.7, 1830.8
), IV_GSM97938 = c(160.9, 109.4, 1.9, 1714.8), IV_GSM97940 = c(191.9,
96.7, 2.5, 1562.9), IV_GSM97942 = c(211.2, 140.6, 5.4, 1276.2
), IV_GSM97945 = c(108.8, 86.9, 1.8, 1329.3), IV_GSM97946 = c(87,
47.3, 1.1, 1587.7), IV_GSM97948 = c(117.5, 42.7, 5.4, 778.6
), IV_GSM97950 = c(260.6, 237.2, 6.9, 3320.4), IV_GSM97952 = c(248.7,
166.3, 7.8, 1446.4), IV_GSM97953 = c(173.1, 88.4, 2.6, 5287.1
), IV_GSM97954 = c(71.8, 49.4, 2.8, 1334.8), IV_GSM97955 = c(83.4,
79.8, 21.1, 919.8), IV_GSM97959 = c(100.6, 52.2, 9.2, 1607.6
), IV_GSM97961 = c(86.7, 25.8, 2.3, 1600.9), IV_GSM97963 = c(105.9,
62.7, 1.2, 933), IV_GSM97965 = c(119.9, 77.2, 4.9, 1959.5
), IV_GSM97966 = c(74.4, 50.9, 6.3, 804.2), IV_GSM97967 = c(56.9,
28.6, 1.7, 2295), IV_GSM97968 = c(74.1, 9.4, 6.2, 1142.8),
IV_GSM97969 = c(56, 67.1, 6.7, 1057.5), IV_GSM97971 = c(113.6,
52.7, 1.2, 923.4), II_GSM97799 = c(197.5, 93.3, 22.6, 1552.4
), II_GSM97823 = c(133.6, 8.7, 1.4, 1545.7), II_GSM97824 = c(66.1,
52.9, 1.1, 2014), II_GSM97830 = c(91.2, 5.3, 3.3, 613.5),
II_GSM97835 = c(109.5, 43.6, 1.9, 1556.4), II_GSM97838 = c(108.1,
50.9, 3.4, 1515.2), II_GSM97841 = c(79.2, 89.3, 4, 2068.6
), II_GSM97842 = c(149.1, 27.9, 1.4, 1190.1), II_GSM97854 = c(74.5,
49.5, 4.4, 1121.1), II_GSM97857 = c(97.4, 10.7, 5.3, 1591.9
), II_GSM97860 = c(150.3, 16.5, 14, 1937.4), II_GSM97862 = c(48.8,
19.9, 3.7, 970.9), II_GSM97864 = c(108, 51, 26.3, 1659.9),
II_GSM97866 = c(87.1, 99.9, 5, 1114.7), II_GSM97868 = c(113.6,
50.7, 2.7, 780.5), II_GSM97872 = c(62.4, 23.5, 0.8, 856.3
), II_GSM97873 = c(116.5, 42.8, 1.9, 884.9), II_GSM97874 = c(145.4,
65.3, 2.9, 1653.4), II_GSM97875 = c(196.2, 83.8, 4.7, 1884.1
), II_GSM97876 = c(138.2, 28.5, 2.9, 1599.9), II_GSM97880 = c(150.8,
11.3, 15.1, 2020.6), II_GSM97881 = c(101, 66, 8.1, 919),
II_GSM97884 = c(119, 62, 5.9, 2846.2), II_GSM97901 = c(98.8,
2.9, 15.4, 1469.7), II_GSM97902 = c(80, 44.9, 7.2, 1638.8
), II_GSM97909 = c(141.9, 66.6, 4.5, 984.5), II_GSM97911 = c(139.4,
8.9, 33.4, 1045.6), II_GSM97923 = c(198.2, 81.6, 25.4, 1875.6
), II_GSM97928 = c(80.1, 10.2, 14.2, 432.1), II_GSM97929 = c(97.8,
104.4, 8, 2026.4), II_GSM97933 = c(99.2, 51.3, 1.6, 2814.5
), II_GSM97934 = c(120.7, 46.4, 5.8, 2613.3), II_GSM97944 = c(116.6,
65.9, 7.6, 1492.6), II_GSM97949 = c(104.2, 76.1, 6.9, 2139.2
), II_GSM97956 = c(88.5, 7.1, 1, 1255.5), II_GSM97962 = c(56,
5.2, 3.6, 807.8), II_GSM97964 = c(90.5, 42.6, 1.9, 986.8),
II_GSM97970 = c(205.3, 80, 3, 1313.8), III_GSM97822 = c(85,
53.1, 4.2, 562.7), III_GSM97831 = c(94.2, 39.8, 4.3, 2129.4
), III_GSM97845 = c(147.7, 116.4, 1.1, 1918.8), III_GSM97865 = c(98.4,
29.6, 7.1, 1588.5), III_GSM97867 = c(126.2, 21.2, 2.5, 1551.4
), III_GSM97883 = c(53.4, 12.3, 1.3, 842.6), III_GSM97897 = c(133.6,
49, 1.6, 740.4), III_GSM97900 = c(150.3, 30.6, 3.8, 832),
III_GSM97904 = c(131.4, 13.8, 30.7, 2116.2), III_GSM97907 = c(87.4,
114.3, 6.3, 1129.7), III_GSM97925 = c(83.5, 17.5, 2.9, 460.9
), III_GSM97947 = c(103.7, 12.2, 2.2, 527.5)), row.names = c("207029_at",
"211124_s_at", "216974_at", "226534_at"), class = "data.frame")
> dput(scf.control)
structure(list(NB_GSM97800 = c(116.2, 5.5, 2.8, 1867.7), NB_GSM97803 = c(72.8,
29, 2.7, 1321.4), NB_GSM97804 = c(89.5, 18.1, 5, 1275.8), NB_GSM97805 = c(58.6,
27.4, 4.4, 1226), NB_GSM97807 = c(71, 28.4, 0.8, 1431.1), NB_GSM97809 = c(62.7,
39.5, 1, 863.2), NB_GSM97811 = c(97.5, 82.7, 5.8, 1458.4), NB_GSM97812 = c(116.9,
80, 5.4, 1627.5), NB_GSM97816 = c(9.8, 10.5, 3.6, 470.5), NB_GSM97817 = c(148.9,
18.8, 10.1, 1224.8), NB_GSM97820 = c(121.1, 76.3, 5.6, 1192.6
), NB_GSM97825 = c(128, 83.1, 2.5, 1724.6), NB_GSM97827 = c(157.6,
101.2, 2.5, 1927.2), NB_GSM97828 = c(60.3, 5.8, 2.4, 425.2),
NB_GSM97833 = c(111.6, 84.3, 1.8, 1346.4), NB_GSM97834 = c(62.1,
29.1, 1.7, 1443.2), NB_GSM97840 = c(67, 84.1, 2.3, 1126.4
), NB_GSM97846 = c(131.3, 45.3, 1.7, 1682.3), NB_GSM97848 = c(116.3,
28.7, 11.5, 1516), NB_GSM97849 = c(141.7, 105.6, 1.7, 1854.9
), NB_GSM97850 = c(97.3, 62.6, 6, 1272.7), NB_GSM97853 = c(84.3,
89, 42.1, 1551.1), NB_GSM97855 = c(56.6, 7, 5.2, 559.8)), row.names = c("207029_at",
"211124_s_at", "216974_at", "226534_at"), class = "data.frame")
Try this:
To remove:
library(dplyr)
scf.glioma <- scf %>%
select(-starts_with("NB"))
To subset:
scf.control <- scf %>%
select(starts_with("NB"))
Related
I fit length and weight data to a log-log linear model and created a regression line where the response has been back transformed to the original scale.
Next, I would like to add two lines to the scatterplot representing upper and lower 95% confidence intervals.
I'm no expert in R or stats, but I'm trying to get better! What might be the best way to go about doing this? Any help would be greatly appreciated.
NOTE: the length and weight data used in this example is from the 'ChinookArg' data frame from AFS package.
library(ggplot2)
df <- data.frame(tl = c(120.1, 115, 111.2, 110.2, 110, 109.7, 105, 100.1, 98, 92.1,
99, 97.9, 94.9, 92.2, 94.9, 92.7, 92.9, 89.9, 88.7, 92, 87.7,
85.1, 85.1, 82.9, 82.9, 83.8, 82.2, 81, 78.8, 78.8, 74.9, 68.1,
66.8, 59.9, 113.8, 112.9, 108.1, 109.7, 103.7, 103.2, 99.9, 99,
103, 103, 99.4, 97.9, 97.2, 96.7, 95.1, 92.2, 93, 92.2, 91.2,
88.1, 94.6, 94.3, 92.5, 88.1, 89.8, 88.8, 87.9, 86, 87.4, 68.5,
80.5, 79, 77.6, 72.8, 77.3, 78.8, 74.5, 72.6, 73.3, 74, 75.2,
76.6, 72, 70.6, 71.8, 70.2, 68.2, 67.3, 67.7, 65.9, 66.3, 64.7,
63, 62.7, 64.2, 61.3, 64.2, 60.1, 59.4, 57.7, 57.4, 56.5, 54.1,
54.1, 56, 52, 50.8, 49.3, 43.8, 39.8, 39, 35.4, 36.9, 32.1, 31.9,
29.2, 25.2, 18),
w = c(17.9, 17.2, 16.8, 15.8, 14.3, 13.8, 12.8, 11.7, 12.8, 14.8,
9.7, 7.3, 7.8, 9.1, 11.8, 11.3, 11.9, 11.8, 10.8, 5.9, 5.9, 9,
9.8, 8.7, 7.8, 5.7, 6.7, 8.7, 8.4, 7.9, 6.5, 7.3, 5.2, 3.9, 15,
16, 13.3, 11.3, 10.9, 9.8, 9.9, 10.3, 12.6, 10, 10.2, 8.3, 7.9,
8.9, 9.4, 8.9, 8.1, 8.3, 8.3, 8.3, 6.2, 6.6, 6.6, 8.3, 6.3, 6.3,
6.8, 6.8, 5.5, 5, 6.1, 6.6, 7.2, 6.1, 4.1, 4.8, 4.6, 5, 3.7,
3, 2.5, 3.1, 2.4, 2.5, 3, 3.7, 3.5, 2.9, 2.4, 2.3, 3.5, 3.6,
3.7, 3, 2.5, 2.4, 1.6, 1.4, 2.5, 2.6, 1.9, 1.5, 1.8, 2.8, 3.1,
1.4, 1.8, 1, 0.7, 0.7, 0.7, 0.5, 3, 2.8, 0.3, 0.3, 0.3, 0.1))
model<- lm(log(w)~(log(tl)), data = df)
nmodel<- data.frame(tl = seq(from = min(df$tl), to = max(df$tl), length= 100))
nmodel$predicted<- exp(predict(model, nmodel, type = "response"))
plot <- ggplot()+
geom_line(aes(x = tl, y = predicted), col = "black", data = nmodel)+
geom_point(data = df, aes(x=tl, y=w))+
xlab("Length")+
ylab("Weight")
plot
Just add the interval argument to predict() and specify you want the confidence interval.
nmodel<- data.frame(tl = seq(from = min(df$tl), to = max(df$tl), length= 100))
model_preds <- exp(predict(model, nmodel, type = "response", interval = "confidence"))
nmodel <- cbind(nmodel, model_preds)
plot <- ggplot()+
geom_line(aes(x = tl, y = fit), col = "black", data = nmodel)+
geom_line(aes(x = tl, y = lwr), col = "red", data = nmodel)+
geom_line(aes(x = tl, y = upr), col = "red", data = nmodel)+
geom_point(data = df, aes(x=tl, y=w))+
xlab("Length")+
ylab("Weight")
plot
Note that I removed the predicted column, because when you run the predict() function as shown above, it also provides a fit column, which amounts to the same thing.
I have searched and found several examples of what I thought were solutions to this issue, but when I implement them nothing seems to work.
I have a tibble, and have created a graph which consists of two geom_lines with error bars. I want to create a legend at the side that says 'Limb A' beside a red line, and 'Limb B' beside a blue line. Absolutely nothing I do seems to work at all despite feeling like I modify the code each time according the reasonable solutions that come up when I search.
The plot that I want to add a legend to
So, here is my code and an example. If anyone can guide me I would hugely appreciate it. My assumption is that I am missing something pretty fundamental but I am completely lost.
compliance_graph <- ggplot(compliance_stats) +
aes(x = Compliance_B_L_per_cmH2O, y = Mean_VtB) +
geom_line(colour = 'deepskyblue', size = 0.75) +
geom_point(colour = 'deepskyblue', size = 1.0) +
geom_errorbar(aes(ymin = (Mean_VtB - SD_VtB),
ymax = (Mean_VtB + SD_VtB),
width= 0.003),
colour = 'deepskyblue') +
geom_line(aes(y = Mean_VtA, colour = 'Limb A'), colour = 'firebrick4', size = 0.75) +
geom_point(aes(y = Mean_VtA), colour = 'firebrick4', size = 1) +
geom_errorbar(aes(ymin = (Mean_VtA - SD_VtA),
ymax = (Mean_VtA + SD_VtA),
width= 0.003),
colour = 'firebrick4') +
labs(
title = 'Compliance of Limb A vs Tidal Volume',
x = 'Limb A Compliance (L/cmH2O)',
y = 'Mean Tidal Volume (mL)')
compliance_graph <- compliance_graph +
scale_x_continuous(expand = c(0, 0), breaks = breaks_width(0.01)) +
scale_y_continuous(expand = c(0, 0), breaks = breaks_width(50), limits = c(150, 450))
dput(compliance_stats) returns the following:
structure(list(Compliance_B_L_per_cmH2O = c(0.01, 0.02, 0.03,
0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14,
0.15), Vent_P1 = c(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10), Vent_PEEP = c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5), Vent_RR = c(14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14), Vent_IE = c("1:2", "1:2", "1:2", "1:2",
"1:2", "1:2", "1:2", "1:2", "1:2", "1:2", "1:2", "1:2", "1:2",
"1:2", "1:2"), APL_pos = c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3), Mean_VtA = c(344, 359, 377, 380, 379, 382, 377, 377,
377, 376, 375, 374, 375, 375, 376), Min_VtA = c(342, 358, 374,
379, 375, 380, 376, 375, 375, 375, 372, 373, 374, 373, 373),
Max_VtA = c(345, 360, 380, 381, 385, 385, 378, 378, 379,
377, 377, 376, 376, 376, 379), SD_VtA = c(2, 1, 3, 1, 5,
3, 1, 2, 2, 1, 3, 2, 1, 2, 3), Mean_PEEPA = c(6.9, 7, 7.1,
7.2, 7.3, 7.3, 7.4, 7.4, 7.5, 7.5, 7.4, 7.4, 7.4, 7.5, 7.4
), Min_PEEPA = c(6.9, 6.9, 7, 7.2, 7.3, 7.3, 7.4, 7.4, 7.4,
7.4, 7.4, 7.3, 7.3, 7.4, 7.3), Max_PEEPA = c(6.9, 7, 7.1,
7.2, 7.4, 7.4, 7.5, 7.5, 7.5, 7.6, 7.5, 7.6, 7.5, 7.6, 7.4
), SD_PEEPA = c(0, 0.1, 0.1, 0, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1, 0.2, 0.1, 0.1, 0.1), Mean_PeakA = c(14.2, 14.7,
15.4, 15.9, 16.1, 16.3, 16.3, 16.4, 16.4, 16.5, 16.4, 16.5,
16.4, 16.5, 16.5), Min_PeakA = c(14.2, 14.6, 15.3, 15.9,
16.1, 16.2, 16.1, 16.3, 16.3, 16.4, 16.4, 16.5, 16.4, 16.4,
16.4), Max_PeakA = c(14.2, 14.7, 15.5, 15.9, 16.1, 16.3,
16.4, 16.5, 16.5, 16.5, 16.5, 16.5, 16.5, 16.5, 16.6), SD_PeakA = c(0,
0.1, 0.1, 0, 0, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0, 0.1, 0.1,
0.1), Mean_VtB = c(167, 229, 319, 362, 386, 396, 401, 405,
407, 409, 409, 412, 412, 415, 414), Min_VtB = c(166, 228,
316, 358, 385, 393, 399, 404, 406, 409, 408, 411, 410, 412,
413), Max_VtB = c(168, 230, 321, 364, 386, 400, 402, 405,
408, 410, 410, 412, 414, 417, 416), SD_VtB = c(1, 1, 3, 3,
1, 4, 2, 1, 1, 1, 1, 1, 2, 3, 2), Mean_PEEPB = c(6.4, 6.4,
6.5, 6.6, 6.9, 7, 7.1, 7.2, 7.1, 7.2, 7.2, 7.3, 7.3, 7.3,
7.3), Min_PEEPB = c(6.3, 6.3, 6.4, 6.5, 6.7, 6.9, 7, 7.1,
7, 7.1, 7.1, 7.1, 7.2, 7.2, 7.2), Max_PEEPB = c(6.4, 6.5,
6.6, 6.7, 7, 7.1, 7.3, 7.3, 7.3, 7.3, 7.3, 7.5, 7.5, 7.5,
7.5), SD_PEEPB = c(0.1, 0.1, 0.1, 0.1, 0.2, 0.1, 0.2, 0.1,
0.2, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2), Mean_PeakB = c(18, 18,
17.9, 17.8, 17.8, 17.7, 17.5, 17.5, 17.5, 17.4, 17.4, 17.4,
17.3, 17.2, 17.2), Min_PeakB = c(17.9, 18, 17.8, 17.8, 17.7,
17.6, 17.4, 17.4, 17.3, 17.3, 17.3, 17.2, 17.1, 17.1, 17),
Max_PeakB = c(18.2, 18.1, 18, 17.9, 17.8, 17.8, 17.6, 17.5,
17.7, 17.5, 17.5, 17.6, 17.4, 17.4, 17.4), SD_PeakB = c(0.2,
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.1, 0.1, 0.2, 0.2,
0.2, 0.2)), row.names = c(NA, -15L), groups = structure(list(
Compliance_B_L_per_cmH2O = c(0.01, 0.02, 0.03, 0.04, 0.05,
0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15
), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -15L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
If you want to have a legend you have to map on aesthetics, i.e. move color into aes() and make use of scale_color_manual to set the right colors:
library(ggplot2)
compliance_graph <- ggplot(compliance_stats) +
aes(x = Compliance_B_L_per_cmH2O, y = Mean_VtB) +
geom_line(aes(colour = "Limb B"), size = 0.75) +
geom_point(aes(colour = "Limb B"), size = 1.0) +
geom_errorbar(aes(
ymin = (Mean_VtB - SD_VtB),
ymax = (Mean_VtB + SD_VtB),
width = 0.003,
colour = "Limb B"
)) +
geom_line(aes(y = Mean_VtA, colour = "Limb A"), size = 0.75) +
geom_point(aes(y = Mean_VtA, colour = "Limb A"), size = 1) +
geom_errorbar(aes(
ymin = (Mean_VtA - SD_VtA),
ymax = (Mean_VtA + SD_VtA),
colour = "Limb A",
width = 0.003
)) +
scale_color_manual(values = c("Limb A" = "firebrick4", "Limb B" = "deepskyblue")) +
labs(
title = "Compliance of Limb A vs Tidal Volume",
x = "Limb A Compliance (L/cmH2O)",
y = "Mean Tidal Volume (mL)"
)
compliance_graph <- compliance_graph +
scale_x_continuous(expand = c(0, 0), breaks = scales::breaks_width(0.01)) +
scale_y_continuous(expand = c(0, 0), breaks = scales::breaks_width(50), limits = c(150, 450))
compliance_graph
I am trying to output a tableGrob into a .tiff, but it is a bit long. I've tried to get the area of the table fit into the .tiff file, but it is always cut off unless I drastically change the font size to an unreadable size. Is there a way to force the tableGrob to fin into the .tiff file without any cut off?
table.plot <- structure(list(A = c(2.8, 0.5, 1.3, 5.7, 6.5, 1.1, 3.3, 1, 16.9,
8.6, 6.3, 22.2, 14.8, 1.3, 7.9, 12.4, 31, 9.9, 13.2, 26.2, 2),
B = c(13.7, 10.6, 12.7, 20.6, 13.2, 11.2, 14.7, 11.7, 22.3,
12.9, 12.9, 19.5, 20.6, 11.1, 17, 20.3, 43.1, 18.2, 20.9,
26.7, 10.1), C = c(0.4, 0, 0.3, 1, 0.3, 0.1, 0.5, 0.2, 1.2,
0.3, 0.3, 0.9, 1, 0.1, 0.7, 1, 3.3, 0.8, 1.1, 1.6, 0), D = c(29.7,
18, 23.9, 46.2, 33.1, 20.1, 32.6, 21.1, 93.1, 39.9, 33, 116.8,
76.1, 21.4, 49, 66.7, 166.5, 53.7, 69.1, 127.4, 21)), row.names = c("G01",
"G02", "G03", "G04", "G05", "G06", "G07", "G08", "G09", "G10",
"G11", "G12", "H01", "H02", "H03", "H04", "H05", "H06", "H07",
"H08", "Host.1"), class = "data.frame")
tt1 <- ttheme_minimal(
core = list(fg_params = list(fontsize = 8),
padding = unit(c(0.1, 0.1), "mm")),
colhead = list(bg_params = list(fill = "white"),
fg_params = list(fontsize = 8, fontface = "bold")),
rowhead = list(fg_params = list(fontsize = 8, fontface = "bold"))
)
g <- tableGrob(table.plot, theme = tt1)
g <- gtable_add_grob(g,
grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
t = 2, b = nrow(g), l = 1, r = ncol(g))
g <- gtable_add_grob(g,
grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
t = 1, l = 1, r = ncol(g))
save_plot("table is cut off.tiff", g, dpi = 300)
Assuming that save_plot comes from the cowplot package (there is more than one package with a function called save_plot), you can specify the height and aspect ratio like this:
save_plot("table isnt cut off.tiff", g, dpi = 300, base_height = 5.5, base_asp = 0.4)
I have a problem with comparing two sets of curves by using the Kolmogorow-Smirnow-test.
What I would like the program to do, is to compare each variation of Curve 1 with each variation of Curve 2. To accomplish that, I have tried to build a for-loop that iterates through Curve 1, and within that loop another loop that iterates through Curve 2.
Unfortunately, when executing the code, I get an error message about
"not enough x-Data“
When I try running the test by comparing one variation of each curve manually, it works, so I think the problem is the combination of the two loops and the KS-test.
If anyone has experienced a similar error and was able to solve the issue, I would highly appreciate any advice on how to fix it. Thank you!
Example data.frames:
Kurve1 <- structure(list(Punkte = 1:21,
Trial.1 = c(105.5, 85.3, 63.1, 54.9, 42, 34.1, 30.7,
24.2, 20.1, 15.7, 14, 11, 9.3, 7.2, 6.6,
5.3, 4.2, 3.3, 2.6, 1.8, 0.9),
Trial.2 = c(103.8, 85.2, 64.3, 54.1, 41.8, 35.9, 29,
23.7, 20.2, 15.9, 13.5, 11, 9.3, 7.3, 6.4,
5.5, 4.3, 3.4, 2.5, 1.9, 0.9),
Trial.3 = c(104.8, 87.2, 64.9, 52.8, 40.8, 35.6, 29.1,
24.5, 20.4, 16.2, 13.7, 11.2, 9.2, 7.5,
6.4, 5.5, 4.2, 3.5, 2.5, 1.8, 0.9),
Trial.4 = c(106.9, 83.9, 67.1, 55.1, 44.1, 34.1, 29.3,
22.9, 19.4, 16.7, 13.6, 10.8, 9.4, 7.4,
6.1, 5.6, 4.4, 3.5, 2.4, 1.9, 0.9),
Trial.5 = c(104.8, 84.3, 68.7, 54.8, 45.3, 35.2, 28.9,
23.1, 20.1, 16.9, 13.3, 11, 9.6, 7.1, 6.3,
5.4, 4.5, 3.4, 2.3, 2, 0.9)),
class = "data.frame", row.names = c(NA, -21L))
Kurve2 <- structure(list(Punkte = 1:21,
Trial.1 = c(103.5, 81.2, 66.2, 54.5, 45.1, 39.1, 30.9,
27, 21.9, 19.3, 16.6, 14.9, 12.9, 11, 10.1,
9.2, 8, 7.1, 6.3, 6.2, 5),
Trial.2 = c(104, 81, 66.9, 55.2, 46, 38.7, 31.2, 27.3,
22.3, 20, 17.2, 15.2, 12.9, 11.1, 10.2,
9.1, 8, 7.1, 6.4, 5.9, 5),
Trial.3 = c(103.9, 81.9, 67.2, 53.8, 45.4, 38.5, 31.5,
26.8, 22.2, 19.8, 17.4, 15.1, 13, 10.9,
10.1, 9.2, 8.1, 7.1, 6.4, 6, 4.9),
Trial.4 = c(104.2, 84.1, 68.7, 55.4, 45.1, 36.3, 32,
26.9, 22.8, 19.8, 16.8, 14.8, 13.2, 10.9,
10.3, 9.1, 8.2, 7.2, 6.3, 6.1, 5),
Trial.5 = c(103.8, 83.2, 69.2, 55.7, 44.8, 36.4, 31.4,
26.7, 22.1, 18.9, 16.9, 14.4, 13, 11.1,
10.2, 9, 7.9, 7, 6.3, 6.1, 5.1)),
class = "data.frame", row.names = c(NA, -21L))
The code I used for the loop:
for(i in 1:ncol(Kurve1)){
for(j in 1:ncol(Kurve2)){
ks.test(Kurve1$Trial.[i], Kurve2$Trial.[j], alternative = "greater")
}
}
This will work:
for(i in 1:(ncol(Kurve1) - 2)){
for(j in (i + 1):(ncol(Kurve2) - 1)){
print(paste0("Trial.", i, " - Trial.", j))
ks_result <- ks.test(Kurve1[, paste0("Trial.", i)],
Kurve2[, paste0("Trial.", j)],
alternative="greater")
print(ks_result)
}
}
Explanation:
As it is doesn't make sense to run the KS test for the same column, and also doesn't make sense to run for both Trial.1 ~ Trial.2 and Trial.2 ~ Trial.1, etc., you have to run your outer for loop from 1 to the last but one ((ncol(Kurve1) - 2)) index for Trial.* columns, and you have to run your inner for loop from the next index as the outer loop has (i + 1) to the last index ((ncol(Kurve2) - 1)) for Trial.* columns.
You can not paste strings like Trial.[i], you have to use the paste function for that. As with that the Kurve1$paste0("Trial.", i) notation not working, you have to use the extract operator [ to get the column you need (Kurve1[, paste0("Trial.", i)])
As in a (nested) for loop the ks.test runs silently, a have added a print to be able to see the results. I have also added a line print(paste0("Trial.", i, " - Trial.", j)) to tag the actual result with the columns for which it belongs.
I want to plot 12 different monthly time series data over the year range 1984-2018. I want to get a graph like the following but graphics::plot() always gives me an error - what's the solution?
Code:
datats <- ts(data, start=c(1984,1), end=c(2018,12), frequency=12)
plot(datats, ylab="PPT_MM")
Error:
Error in plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels, :
cannot plot more than 10 series as "multiple"
Plot: image of plot
My data:
data<-structure(list(Year = 1984:2018, X1 = c(24.2, 5.3, 59, 31.7,
93.7, 133.2, 42.8, 29.3, 12, 256.5, 0, 28.5, 22.4, 3.8, 295.4,
16.1, 7, 244.8, 79.5, 31.6, 45.1, 12.2, 14, 61.4, 117.4, 74.2,
51, 9.1, 0, 50.4, 0, 13.3, 45.1, 20.7, 25.7), X2 = c(0, 110.5,
0, 0, 13.8, 4, 23.2, 13.3, 6.1, 84.9, 103.5, 83.3, 56.5, 0, 219.4,
2.2, 0, 0, 7.5, 17.2, 47.9, 19.2, 20.5, 44.8, 7.3, 26.3, 64.1,
71.8, 4.6, 0, 80, 16.8, 65.1, 26.2, 2.8), X3 = c(3.4, 78.7, 59.4,
23.3, 109.3, 51.1, 217.3, 43.5, 5, 60.9, 75.3, 150.1, 73.7, 46,
118, 121, 52.5, 113, 98.9, 115.2, 83.1, 101.7, 30, 20.5, 73,
3.2, 241.9, 209.8, 1.6, 113.1, 207.4, 39, 27.4, 15.2, 91.6),
X4 = c(51.4, 278.3, 192.4, 56.7, 203.7, 193.7, 251.5, 80.5,
192.9, 20.8, 82.4, 49.6, 96.4, 208.5, 123, 113.8, 68.5, 88.9,
120.4, 153.2, 121.5, 165.1, 117, 143.9, 129.3, 145.4, 107.9,
1, 286.4, 209.3, 44, 55.3, 82.4, 40.3, 83.4), X5 = c(0.6,
84.6, 72.7, 39.4, 23.6, 37, 64.9, 57.5, 32, 13.7, 29.8, 33.1,
42.8, 21.2, 162.6, 9.8, 15.6, 15.3, 126.6, 133.8, 59.8, 100.5,
70, 41.7, 4.5, 29.7, 120.9, 37.7, 112.5, 37.7, 14.8, 34.3,
23.2, 35.6, 22.7), X6 = c(0, 0, 5.7, 61.9, 10.1, 0, 5.1,
3.1, 1.1, 6.3, 8.2, 0.9, 19.3, 0.5, 38.7, 5, 6.2, 4.3, 1.4,
0, 0.7, 0.9, 2, 2.7, 0.3, 5.2, 1.7, 0, 36.9, 0.3, 9.7, 26.3,
5.7, 2.2, 2.7), X7 = c(7, 1.4, 0.4, 3.6, 0, 3.8, 0, 1.4,
6.8, 0.5, 3.3, 4.1, 2.2, 1.2, 15.4, 2.4, 0.3, 4.3, 0, 0,
0, 1, 1.9, 26.8, 1.3, 0, 2.7, 3.4, 0, 2.7, 13, 6.1, 4.8,
5, 3.5), X8 = c(6.4, 1.9, 0.3, 11.6, 3, 14.6, 3.4, 8.9, 0,
3.1, 9.9, 3.2, 2.2, 4.3, 2.9, 4.9, 1.8, 2.5, 0.2, 26.3, 0,
3.5, 4.7, 5.2, 0.2, 0, 1.3, 0.7, 11.8, 0.6, 32.4, 4.1, 3.8,
7.2, 2.8), X9 = c(15.7, 0.2, 0, 0, 15.4, 0.3, 0, 3.4, 0.7,
0.6, 4.3, 5.1, 0.7, 0, 1.8, 0, 2.3, 0, 8.8, 21.5, 1, 1, 3,
4.3, 9.1, 1.2, 0.6, 5.9, 0, 2.5, 13.6, 3, 3.4, 6.8, 2.22),
X10 = c(154.4, 56, 2.6, 0.3, 33.5, 96.9, 48.8, 46.5, 31,
26, 110.9, 103.7, 0, 83.2, 3.3, 20.6, 41, 7.3, 21.2, 31.8,
47.6, 10.2, 14.5, 18.3, 23.9, 41.3, 32.1, 50.2, 22.3, 64,
25.4, 17.2, 7.4, 23.6, 87.6), X11 = c(211.2, 75.1, 180.8,
93.5, 120.8, 106, 208.5, 119.9, 141.2, 150.8, 406.3, 46,
187.7, 270.3, 113.9, 257, 189.8, 169, 144.3, 121.1, 161.3,
125, 117.2, 127.9, 122.8, 34.4, 116, 180.3, 119.7, 1024.7,
104.8, 104.5, 51.5, 38.2, 206.8), X12 = c(341.4, 121, 127.2,
12, 180.2, 129.5, 110.2, 156.7, 186.2, 67.3, 143.7, 87.6,
1.5, 177.3, 15.8, 108.6, 98.8, 43.6, 182.4, 24.1, 89.5, 100.5,
95, 82.4, 44.9, 127.1, 59.6, 28.2, 73.2, 919.5, 0, 122.9,
51.4, 17.9, 249.6)), class = "data.frame", row.names = c(NA,
-35L))
Function documentation (https://rdrr.io/r/stats/plot.ts.html) gives us some hints...
Apparently it is not possible to plot more than 10 charts on the same panel. Try for example:
datats <- ts(data[,-1], start=c(1984,1), end=c(2018,12), frequency=12)
plot(datats[,c(1:10)], ylab="PPT_MM")
It works! Then to use this method 10 looks like to be a limit.
You can use alternatively some ggplot:
library(reshape2)
library(dplyr)
library(ggplot2)
melt(data, id.vars = "Year") %>%
ggplot(aes(x = Year, y = value , group = 1)) +
geom_line() + geom_point() +
facet_wrap(. ~ variable)