How to create a table of cumulative distribution in R? - r

I have plotted cumulative distribution of speeds using ecdf but I also want to get the output of cumulative probability as a table like this:
Speed Cumulative Probability
40 0.20
45 0.45
55 0.51
60 0.70
70 0.90
80 1.00
For my data, when I use ecdf it gives me following (Note that 'cc' is my original data frame):
> ccf <- subset(cc, cc$svel>=55 & cc$Headway>=4)
> cdf<- ecdf(ccf$svel)
> cdf
Empirical CDF
Call: ecdf(ccf$svel)
x[1:356] = 55, 55.01, 55.02, ..., 76.76, 76.8
How can I get the table like the example above? Please note that I tried 'cumsum' but it only gives the cumulative frequency whereas I need cumulative probability.
EDIT
Here's my data:
dput(ccf$svel)
c(67.9, 67.62, 67.37, 67.19, 67.04, 66.93, 66.83, 66.74, 66.65,
66.55, 66.46, 66.36, 66.25, 66.12, 65.97, 61.12, 61.2, 61.29,
61.39, 61.49, 61.58, 61.66, 61.73, 61.79, 57.98, 57.73, 57.5,
57.29, 57.1, 56.92, 56.75, 56.59, 56.45, 56.32, 56.19, 58, 58.18,
58.36, 58.52, 58.69, 56.28, 56.19, 56.08, 55.96, 55.83, 55.68,
55.52, 55.34, 55.15, 58.58, 58.89, 59.17, 59.4, 59.58, 55.01,
55.14, 55.23, 55.3, 55.36, 55.41, 55.47, 55.53, 55.59, 55.66,
55.74, 55.83, 55.92, 56.03, 56.16, 56.3, 56.44, 56.58, 56.71,
56.82, 56.91, 56.98, 57.03, 57.06, 57.07, 57.07, 57.06, 57.04,
57.02, 55.05, 55.22, 55.39, 55.56, 55.73, 55.92, 56.11, 56.31,
56.53, 56.77, 57.02, 57.28, 57.54, 57.79, 58, 58.18, 58.32, 58.43,
58.5, 58.56, 58.6, 58.64, 58.68, 58.73, 58.8, 58.86, 58.92, 58.97,
59.01, 59.03, 59.05, 59.05, 59.04, 59.02, 58.99, 58.97, 58.95,
55.1, 55.39, 55.68, 55.97, 56.24, 56.48, 56.68, 56.82, 56.9,
56.94, 56.96, 56.97, 56.99, 57.02, 57.07, 57.14, 57.22, 57.3,
57.37, 57.41, 57.45, 57.48, 57.51, 57.56, 57.62, 57.69, 57.77,
57.86, 57.95, 58.06, 58.17, 58.29, 58.42, 58.53, 58.64, 58.74,
58.83, 58.91, 58.98, 55.01, 55.08, 55.15, 55.22, 55.3, 55.37,
55.45, 55.53, 55.62, 55.73, 55.85, 55.99, 56.14, 56.31, 56.49,
56.67, 56.87, 57.05, 57.22, 57.37, 57.51, 57.65, 57.79, 57.95,
58.13, 58.3, 58.47, 58.63, 58.78, 58.91, 59.03, 59.14, 59.24,
59.34, 59.43, 59.53, 59.62, 59.72, 59.81, 59.9, 59.98, 60.07,
60.15, 60.22, 60.31, 60.39, 60.47, 60.56, 60.65, 60.75, 60.86,
60.98, 61.11, 61.24, 61.39, 61.54, 61.71, 61.89, 62.09, 62.31,
62.56, 62.84, 63.14, 63.46, 63.78, 64.08, 64.81, 64.84, 64.85,
64.87, 64.89, 64.92, 64.94, 64.97, 65, 65.02, 65.04, 65.07, 65.11,
65.15, 65.17, 65.18, 65.17, 65.15, 65.13, 65.1, 65.06, 65.01,
64.96, 64.9, 64.84, 64.79, 64.76, 55.04, 55.15, 55.25, 55, 55.23,
55.45, 55.68, 55.9, 56.69, 56.74, 55, 55, 55, 55, 55, 55.01,
55.26, 55.51, 55.77, 56.02, 56.28, 56.56, 56.84, 57.13, 57.42,
57.7, 57.98, 58.25, 58.49, 58.73, 58.94, 59.13, 59.29, 59.4,
59.48, 59.5, 59.48, 59.42, 59.31, 59.17, 59, 58.8, 58.6, 58.38,
58.17, 57.96, 57.77, 57.59, 57.44, 57.31, 57.21, 57.13, 57.07,
57.04, 57.03, 57.04, 57.07, 57.11, 57.18, 57.26, 57.34, 57.43,
57.51, 57.59, 57.68, 57.78, 57.88, 57.99, 58.08, 58.16, 58.22,
58.27, 58.3, 58.31, 58.31, 58.3, 58.27, 58.25, 58.22, 58.18,
58.14, 58.08, 58.01, 57.93, 57.84, 57.72, 57.59, 57.43, 57.27,
57.1, 56.93, 56.77, 56.63, 56.5, 56.38, 56.28, 56.19, 56.12,
56.05, 55.99, 55.94, 55.9, 55.88, 55.86, 55.85, 55.86, 55.87,
55.89, 55.9, 55.91, 55.91, 55.88, 55.84, 55.78, 55.71, 55.63,
55.56, 55.5, 55.45, 55.4, 55.37, 55.34, 55.32, 55.3, 55.29, 55.27,
55.26, 55.26, 55.25, 55.25, 55.26, 55.26, 55.27, 55.28, 55.29,
55.31, 55.33, 55.36, 55.39, 55.02, 55.07, 55.12, 55.16, 55.21,
55.26, 55.31, 55.04, 55.21, 55.38, 55.54, 55.71, 55.88, 56.05,
56.21, 56.38, 56.54, 56.71, 56.88, 57.04, 57.2, 57.35, 55.46,
55.59, 55.74, 55.92, 56.11, 56.32, 56.54, 56.77, 57.02, 57.28,
55.22, 55.28, 55.35, 55.42, 55.5, 55.58, 55.68, 55.78, 55.88,
56, 55.15, 55.45, 55.72, 55.94, 56.11, 56.22, 56.29, 56.33, 56.36,
56.4, 56.45, 56.51, 56.59, 56.69, 56.81, 56.95, 57.11, 57.27,
57.44, 57.61, 57.78, 57.95, 58.12, 58.29, 58.46, 58.63, 58.79,
58.94, 59.08, 59.21, 59.32, 59.41, 55.13, 55.3, 55.47, 55.65,
55.83, 56.02, 56.22, 56.43, 56.66, 56.9, 55.17, 56.02, 56.11,
56.21, 56.32, 56.42, 56.52, 57.18, 57.29, 57.42, 76.27, 76.28,
76.3, 76.33, 76.37, 76.41, 76.47, 76.54, 76.62, 76.7, 76.76,
76.8, 76.8, 55.08, 55.16, 55.24, 55.32, 55.4, 55.48, 55.12, 55.39,
55.67, 55.94, 56.21, 56.47, 56.72, 56.97, 57.19, 57.4, 57.58,
57.73, 57.87, 57.99, 58.11)

Here is a function that will do it:
cumprob <- function(y) {
fun <- function(y, x) length(y[y<x])/length(y)
prob<-sapply(y, fun, y=y)
data<- data.frame(value=unique(y[order(y)]), prob=unique(prob[order(prob)]))
}
Testing in your data (here I called it data):
cp<-cumprob(data)
head(cp)
value prob
1 55.00 0.00000000
2 55.01 0.01156069
3 55.02 0.01734104
4 55.04 0.01926782
5 55.05 0.02312139
6 55.07 0.02504817
Plot:
plot(cp)
Another quick and informal way I find pretty handy is using the hist function to automatically cut the data and get the midpoints.
Using your data as data:
h <- hist(data)
cum.prob <- data.frame(value=h$mids, prob=cumsum(h$counts)/sum(h$counts))
That gives you:
cum.prob
value prob
1 55 0.2793834
2 57 0.6319846
3 59 0.8285164
4 61 0.8786127
5 63 0.8921002
6 65 0.9479769
7 67 0.9749518
8 69 0.9749518
9 71 0.9749518
10 73 0.9749518
11 75 0.9749518
12 77 1.0000000

Related

R: Extract single month data from a monthly time-series

Question
I have a monthly time series (object axts in the code below) for the period Jan 1993 - Dec 2019 and I would like to create a time series that contains all the data for a single month, e.g. february.
Details
This is its structure:
str(axts)
An ‘xts’ object on Jan 1993/Dec 2019 containing:
Data: num [1:324, 1] -28.3 -22.8 -67.1 -122.5 -72.7 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr "SSH"
Indexed by objects of class: [yearmon] TZ: UTC
xts Attributes:
NULL
Here is its creation:
axts<-structure(c(-28.3, -22.8, -67.1, -122.5, -72.7, -102.6, 49.3, 107.2,
62.6, 98.8, 51.6, -12.8, -36.5, -22.6, -53.6, -16.3, -83.6,
-127.5, -40.2, -80.8, -71.4, -89.6, -78, -24.6, -41.8, -79.2,
-88.9, -111.3, -127.6, -97.6, -41.6, -6.3, -8, -15.8, -21.6,
1.5, 33.4, 71.5, 36, -18.8, 78.5, -20.4, 111.1, 93.5, 142.5,
110.4, 60, 78.6, 72.6, -5.2, -65.7, -102.1, -61, 109.8, 69.8,
67.7, 47.6, 64.7, 52.7, -20, -58, 41.7, 5.8, -3.1, 120.1, 180.3,
149.4, 213.7, 166.4, 78.5, 65.6, 12.1, -2.7, -46.1, -27.2,
72.8, 11.3, 46.4, 50.3, 40, 78.5, 154.8, 178.1, 99.9, 66.5,
-47.1, -76.7, -6.9, -23.6, 113.7, 37.6, 120.6, 136.9, 116.1,
79.6, 33.3, 66.8, -5.3, 8.3, 95, 81.7, 82.9, 118.6, 140, 139.8,
126.2, 157.6, 95.1, 95.7, 26.8, 116.6, 77.3, 106.7, -53.3, -104.4,
-88.1, -58.9, -17.8, 159.1, 179.8, 27.1, -88.5, -84.2, -34.3, 61,
102, 133.1, 162, 130, 124.8, 133.7, 109.6, 21.9, 123, 113.5, 102.4,
117.2, 24.9, 45.6, 71.2, 163.8, 118, 54.2, 87.4, 97.9, 127.2, 11.6,
-84.1, 15.1, 5.9, 71, 140.6, 47.4, 26.4, 36.2, 5.4, -5.4, -46.8, -25.3,
-79.4, -45.8, 40.1, -52.8, -95.5, -56.5, 175.6, 140.6, -10.5, -77.7, -26.8,
73.6, 13.4, 15.4, 128.1, 129.2, 50.6, 7.5, -27.6, 19.2, 61, 84.3, -31.2,
-19.1, 31.8, 22.4, -31, -93.9, -25.8, -4.1, 87.3, -12.8, -125.8, -58.1,
74.5, 41, -141.6, -142.1, -92.9, 25.6, 50.8, 139.3, 126.1, -10.4, 45.1,
92.2, 47.4, -1.6, -46.9, 69.4, -52.3, 18.2, 194.8, 157.6, 37.3, 28.3, -18,
-46.8, -95.8, -146, -172.4, -14.7, -33.4, -46.4, 5.9, 146.3, 124.5, 82.8,
-5.9, -124.7, -108.4, -66.3, -61.8, -62.6, 29.6, 38.5, 8.3, 158.4, 80.2, 10.5,
27.1, 21.2, 21.2, 121.8, 94.3, -86.3, -49.4, 178.4, 100.3, 68.6, 106.5, 72.1, 58.6,
-42.5, -74.6, -85.3, -100.1, -122.5, -125.7, -109.3, -100.6, -17, 2.8, -58, -32.4,
-63.2, 28.4, -99.8, -198.3, -103, 36.3, 47.5, 85.4, 124.9, 61.6, -150.2, -174.6,
-182.3, -69.3, -48.8, -10.3, 82.3, 13.9, -40, 64.1, 126.1, 15.5, 49.8, 12.3, -105,
-23.9, -51.7, -25.6, -140.1, -73.1, -66.1, -57, -20.1, -50.1, 25.3, -67.9, -47.8,
6.3, 13.2, 48.1, -50.8, 26.5, -58.4, -70.6, 81.2, 41.9, -32.6, 25.1, 118.7, 82.6,
62.6, 13.9, -149.5, 8, -32.8, 70.8, 96.9, 146.7, 106.2, -21.3),
.Dim = c(324L, 1L), index = structure(c(725846400, 728524800, 730944000, 733622400, 736214400,
738892800, 741484800, 744163200, 746841600, 749433600,
752112000, 754704000, 757382400, 760060800, 762480000,
765158400, 767750400, 770428800, 773020800, 775699200,
778377600, 780969600, 783648000, 786240000, 788918400, 791596800,
794016000, 796694400, 799286400, 801964800, 804556800, 807235200,
809913600, 812505600, 815184000, 817776000, 820454400, 823132800,
825638400, 828316800, 830908800, 833587200, 836179200, 838857600,
841536000, 844128000, 846806400, 849398400, 852076800, 854755200,
857174400, 859852800, 862444800, 865123200, 867715200, 870393600,
873072000, 875664000, 878342400, 880934400, 883612800, 886291200,
888710400, 891388800, 893980800, 896659200, 899251200, 901929600,
904608000, 907200000, 909878400, 912470400, 915148800, 917827200,
920246400, 922924800, 925516800, 928195200, 930787200, 933465600,
936144000, 938736000, 941414400, 944006400, 946684800, 949363200,
951868800, 954547200, 957139200, 959817600, 962409600, 965088000,
967766400, 970358400, 973036800, 975628800, 978307200, 980985600,
983404800, 986083200, 988675200, 991353600, 993945600, 996624000,
999302400, 1001894400, 1004572800, 1007164800, 1009843200, 1012521600,
1014940800, 1017619200, 1020211200, 1022889600, 1025481600, 1028160000,
1030838400, 1033430400, 1036108800, 1038700800, 1041379200, 1044057600,
1046476800, 1049155200, 1051747200, 1054425600, 1057017600, 1059696000,
1062374400, 1064966400, 1067644800, 1070236800, 1072915200, 1075593600,
1078099200, 1080777600, 1083369600, 1086048000, 1088640000, 1091318400,
1093996800, 1096588800, 1099267200, 1101859200, 1104537600, 1107216000,
1109635200, 1112313600, 1114905600, 1117584000, 1120176000, 1122854400,
1125532800, 1128124800, 1130803200, 1133395200, 1136073600, 1138752000,
1141171200, 1143849600, 1146441600, 1149120000, 1151712000, 1154390400,
1157068800, 1159660800, 1162339200, 1164931200, 1167609600, 1170288000,
1172707200, 1175385600, 1177977600, 1180656000, 1183248000, 1185926400,
1188604800, 1191196800, 1193875200, 1196467200, 1199145600, 1201824000,
1204329600, 1207008000, 1209600000, 1212278400, 1214870400, 1217548800,
1220227200, 1222819200, 1225497600, 1228089600, 1230768000, 1233446400,
1235865600, 1238544000, 1241136000, 1243814400, 1246406400, 1249084800,
1251763200, 1254355200, 1257033600, 1259625600, 1262304000, 1264982400,
1267401600, 1270080000, 1272672000, 1275350400, 1277942400, 1280620800,
1283299200, 1285891200, 1288569600, 1291161600, 1293840000, 1296518400,
1298937600, 1301616000, 1304208000, 1306886400, 1309478400, 1312156800,
1314835200, 1317427200, 1320105600, 1322697600, 1325376000, 1328054400,
1330560000, 1333238400, 1335830400, 1338508800, 1341100800, 1343779200,
1346457600, 1349049600, 1351728000, 1354320000, 1356998400, 1359676800,
1362096000, 1364774400, 1367366400, 1370044800, 1372636800, 1375315200,
1377993600, 1380585600, 1383264000, 1385856000, 1388534400, 1391212800,
1393632000, 1396310400, 1398902400, 1401580800, 1404172800, 1406851200,
1409529600, 1412121600, 1414800000, 1417392000, 1420070400, 1422748800,
1425168000, 1427846400, 1430438400, 1433116800, 1435708800, 1438387200,
1441065600, 1443657600, 1446336000, 1448928000, 1451606400, 1454284800,
1456790400, 1459468800, 1462060800, 1464739200, 1467331200, 1470009600,
1472688000, 1475280000, 1477958400, 1480550400, 1483228800, 1485907200,
1488326400, 1491004800, 1493596800, 1496275200, 1498867200, 1501545600,
1504224000, 1506816000, 1509494400, 1512086400, 1514764800, 1517443200,
1519862400, 1522540800, 1525132800, 1527811200, 1530403200, 1533081600,
1535760000, 1538352000, 1541030400, 1543622400, 1546300800, 1548979200,
1551398400, 1554076800, 1556668800, 1559347200, 1561939200, 1564617600,
1567296000, 1569888000, 1572566400, 1575158400),
tzone = "UTC", tclass = "yearmon", tformat = "%m/%Y"), class = c("xts", "zoo"), .Dimnames = list(NULL, "SSH"))
Because the index of axts is of yearmon class we can use cycle to get the month number so for February (2nd month of the year):
axts[cycle(axts) == 2]
giving:
SSH
02/1993 -22.8
02/1994 -22.6
02/1995 -79.2
02/1996 71.5
02/1997 -5.2
02/1998 41.7
## ...snip...
If the reason you want this is to create a plot for each month then we don't even need that as it can be done simply using monthplot which produces 12 side by side plots, one for each month.
monthplot(as.ts(axts), ylab = "SSH")
I edited your dput because there were some minor errors in it but should be good now.
I done some transformations of your data so that it is only taking the value from on specific month of each year; in this case, February.
#do some transformations first
axts_df<-as.data.frame(axts)
library(data.table)
library(lubridate)
axts_df<-setDT(axts_df, keep.rownames = T)[]
axts_df$MonthYear<-my(axts_df$rn)
axts_df$Month<-month(axts_df$MonthYear)
#for February only:-
library(dplyr)
axts_df_feb<-axts_df%>%
filter(Month==2)
#convert back into time series
axts_df_feb$rn<-NULL
axts_df_feb$Month<-NULL
axts_df_feb_ts<-ts(axts_df_feb$SSH)
plot(axts_df_feb_ts)
The plot below gives you the value for every February of each year.
However, there is a way to do this in ggplot2, you could do it like this:-
ggplot(axts_df_feb, aes(x=MonthYear,y=SSH))+geom_line()+ggtitle("Values for every February (1993-2019)")

R Scaling a vector between -1 and 1

I have a vector with 100 elements.
vec <- c(58.12, 51.97, 61.83, 53.46, 30.67, 38.8, 48.79, 56.82, 20.19,
53.1, 54.95, 46.45, 41.09, 51.76, 52.56, 44.63, 52.95, 30, 50.7,
56.33, 64.72, 39.99, 39.37, 33.82, 47.62, 51.28, 37.38, 50.55,
68.39, 53.88, 33.37, 29.69, 30.74, 47.51, 72.64, 47.88, 42.28,
62.71, 47.47, 71.45, 55.94, 39.5, 32.97, 28.81, 56.59, 49.79,
43.49, 41.97, 43.61, 30.09, 50.18, 63.88, 57.77, 41.57, 27.52,
38.47, 46.13, 41.85, 39.14, 46.38, 47.73, 61.51, 66.73, 56.28,
59.89, 47.38, 27.27, 17.41, 36.8, 27.21, 43.13, 43.68, 29.33,
53.76, 74.69, 29.56, 63.41, 31.61, 56.32, 49.68, 48.65, 46.81,
51.23, 65.23, 54.79, 84.64, 63.55, 32.4, 47.93, 68.13, 33.05,
30.21, 40.62, 48.28, 38.69, 31.72, 52.01, 64.17, 53.12, 35.03)
I want to scale this vector vec so that all the numbers between 0 to 50 are scaled from -1 to 0 and all number between 50 to 100 are scaled from 0 to 1.
I have written the following code to do this -
newvec = ifelse(vec < 50, -(vec/min(vec, na.rm = T)), vec/max(vec, na.rm = T))
plot(vec, newvec)
The output looks like (see the black circles) -
For the numbers above 50, scaling is fine, however, for the numbers below 50, the scaling is working in reverse order and is incorrect (as showing in the graph).
I have drawn a red line in this graph showing the correct scaling.
Can someone show, what I am doing wrong?
Thanks.
looks like a perfect linear equation!
m <- lm( y~x, data=data.frame( x=c(0,50,100), y=c(-1,0,1) ) )
coef(m)
gives:
(Intercept) x
-1.00 0.02
So multiply by 0.02 and subtract 1
You could do it by first rescaling it to 0-1 to then multiply it by two and subtracting one:
vec <- c(58.12, 51.97, 61.83, 53.46, 30.67, 38.8, 48.79, 56.82, 20.19,
53.1, 54.95, 46.45, 41.09, 51.76, 52.56, 44.63, 52.95, 30, 50.7,
56.33, 64.72, 39.99, 39.37, 33.82, 47.62, 51.28, 37.38, 50.55,
68.39, 53.88, 33.37, 29.69, 30.74, 47.51, 72.64, 47.88, 42.28,
62.71, 47.47, 71.45, 55.94, 39.5, 32.97, 28.81, 56.59, 49.79,
43.49, 41.97, 43.61, 30.09, 50.18, 63.88, 57.77, 41.57, 27.52,
38.47, 46.13, 41.85, 39.14, 46.38, 47.73, 61.51, 66.73, 56.28,
59.89, 47.38, 27.27, 17.41, 36.8, 27.21, 43.13, 43.68, 29.33,
53.76, 74.69, 29.56, 63.41, 31.61, 56.32, 49.68, 48.65, 46.81,
51.23, 65.23, 54.79, 84.64, 63.55, 32.4, 47.93, 68.13, 33.05,
30.21, 40.62, 48.28, 38.69, 31.72, 52.01, 64.17, 53.12, 35.03)
rescale_minMax <- function(x){
1 - (x - max(x)) / (min(x) - max(x))
}
newvec = rescale_minMax(vec) * 2 - 1
plot(vec, newvec)
Created on 2021-03-12 by the reprex package (v0.3.0)

How to remove a dot without removing 0's afterwards in order to do a merge

I have two dataframes that have columns as such:
df1 <- c(1.11, 1.13, 1.12, 1.21, 1.22, 1.3, 1.4, 1.5, 2, 5, 10.1, 10.2,
10.3, 11.1, 11.2, 13.1, 13.2, 12, 14.1, 14.21, 14.22, 14.29,
15.11, 15.12, 15.13, 15.14, 15.2, 15.31, 15.32, 15.33, 15.42,
15.49, 15.41, 15.43, 15.44, 15.51, 15.52, 15.53, 15.54, 16, 17.11,
17.21, 17.12, 17.22, 17.23, 17.29, 17.3, 18.1, 18.2, 19.11, 19.12,
19.2, 20.1, 20.21, 20.22, 20.23, 20.29, 21.01, 21.02, 21.09,
22.12, 22.11, 22.13, 22.19, 22.21, 22.22, 22.3, 23.1, 23.2, 23.3,
24.11, 24.12, 24.13, 24.3, 24.23, 24.21, 24.24, 24.22, 24.29,
25.11, 25.19, 25.2, 26.1, 26.94, 26.95, 26.93, 26.92, 26.91,
26.96, 26.99, 27.1, 27.2, 27.31, 27.32, 28.11, 28.12, 28.13,
28.91, 28.92, 28.93, 28.99, 29.11, 29.12, 29.13, 29.14, 29.15,
29.19, 29.21, 29.22, 29.29, 29.24, 29.23, 29.25, 29.26, 29.27,
29.3, 30, 31.1, 31.2, 31.3, 31.4, 31.5, 31.9, 32.1, 32.2, 32.3,
33.11, 33.12, 33.13, 33.2, 33.3, 34.1, 34.2, 34.3, 35.11, 35.12,
35.2, 35.3, 35.91, 35.92, 35.99, 36.1, 36.91, 36.92, 36.93, 36.94,
36.99, 37.1, 37.2, 40.1, 40.2, 40.3, 41, 45.1, 45.2, 45.3, 45.4,
45.5, 50.1, 50.2, 50.3, 50.4, 50.5, 51.1, 51.21, 51.22, 51.31,
51.39, 51.41, 51.42, 51.43, 51.49, 51.5, 51.9, 52.11, 52.19,
52.2, 52.32, 52.31, 52.33, 52.34, 52.39, 52.4, 52.51, 52.52,
52.59, 52.6, 55.1, 55.2, 60.1, 60.21, 60.22, 60.23, 60.3, 61.1,
61.2, 62.1, 62.2, 63.01, 63.02, 63.03, 63.04, 63.09, 64.11, 64.12,
64.2, 65.11, 65.19, 65.91, 65.92, 65.99, 66.01, 66.03, 66.02,
67.11, 67.12, 67.19, 67.2, 70.1, 70.2, 71.11, 71.12, 71.13, 71.21,
71.22, 71.23, 71.29, 71.3, 72.1, 72.2, 72.3, 72.4, 72.5, 72.9,
73.1, 73.2, 74.11, 74.12, 74.13, 74.14, 74.21, 74.22, 74.3, 74.91,
74.92, 74.93, 74.94, 74.95, 74.99, 75.11, 75.12, 75.13, 75.14,
75.21, 75.22, 75.23, 75.3, 80.1, 80.21, 80.22, 80.3, 80.9, 85.11,
85.12, 85.19, 85.2, 85.31, 85.32, 90, 91.11, 91.12, 91.2, 91.91,
91.92, 91.99, 92.11, 92.12, 92.13, 92.14, 92.19, 92.2, 92.31,
92.32, 92.33, 92.41, 92.49, 93.01, 93.02, 93.03, 93.09, 95, 99
)
df2 <- c(111L, 112L, 113L, 121L, 122L, 130L, 140L, 200L, 1511L, 1549L,
1520L, 1513L, 1512L, 1514L, 1532L, 1531L, 1541L, 1544L, 1542L,
1543L, 150L, 501L, 502L, 1551L, 1552L, 1553L, 1554L, 9600L, 9700L,
2429L, 1533L, 1600L, 1810L, 1820L, 2330L, 2411L, 2412L, 2421L,
2413L, 2430L, 2519L, 2520L, 2010L, 2021L, 2022L, 2023L, 2029L,
1920L, 3699L, 2101L, 2102L, 2699L, 2109L, 1711L, 1712L, 1729L,
2610L, 5260L, 1721L, 1730L, 1722L, 1723L, 3720L, 1410L, 1429L,
1421L, 1422L, 1030L, 2710L, 2731L, 2891L, 2892L, 3520L, 3710L,
NA, 1310L, 1200L, 1320L, 2720L, 2732L, 1010L, 1020L, 2310L, 2320L,
1110L, 2422L, 2423L, 2424L, 2927L, 2914L, 2919L, 2929L, 3190L,
3311L, 3312L, 3313L, 3000L, 3320L, 3330L, 1911L, 1912L, 2899L,
2511L, 3140L, 3511L, 3512L, 3694L, 2692L, 2693L, 2694L, 2695L,
2696L, 2691L, 3691L, 3692L, 3693L, 2221L, 2926L, 3150L, 3592L,
2893L, 2915L, 2921L, 3610L, 2811L, 2812L, 2813L, 2930L, 3420L,
2912L, 2911L, 2922L, 2923L, 2924L, 2925L, 7250L, 2913L, 3599L,
3410L, 3430L, 3591L, 3530L, 3110L, 3120L, 3210L, 2213L, 2230L,
3220L, 3230L, 3130L, 2211L, 2212L, 2219L, 2222L)
How can I adjust the first one in order to use it to merge with the second? The first one is a character column, so that I would need to substitute the . out. The issue is that if I do such thing, a value such as 1.3 becomes 13 and not 130, as desired. If I multiply it by 10, then the other regular values wouldn't be matched.
You can use format(df1, nsmall = 2L) first, and then remove all of the ..
library(stringr)
library(dplyr) #for the pipe "%>%"
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df1 <- c(1.11, 1.13, 1.12, 1.21, 1.22, 1.3, 1.4, 1.5, 2, 5, 10.1, 10.2,
10.3, 11.1, 11.2, 13.1, 13.2, 12, 14.1, 14.21, 14.22, 14.29,
15.11, 15.12, 15.13, 15.14, 15.2, 15.31, 15.32, 15.33, 15.42,
15.49, 15.41, 15.43, 15.44, 15.51, 15.52, 15.53, 15.54, 16, 17.11,
17.21, 17.12, 17.22, 17.23, 17.29, 17.3, 18.1, 18.2, 19.11, 19.12,
19.2, 20.1, 20.21, 20.22, 20.23, 20.29, 21.01, 21.02, 21.09,
22.12, 22.11, 22.13, 22.19, 22.21, 22.22, 22.3, 23.1, 23.2, 23.3,
24.11, 24.12, 24.13, 24.3, 24.23, 24.21, 24.24, 24.22, 24.29,
25.11, 25.19, 25.2, 26.1, 26.94, 26.95, 26.93, 26.92, 26.91,
26.96, 26.99, 27.1, 27.2, 27.31, 27.32, 28.11, 28.12, 28.13,
28.91, 28.92, 28.93, 28.99, 29.11, 29.12, 29.13, 29.14, 29.15,
29.19, 29.21, 29.22, 29.29, 29.24, 29.23, 29.25, 29.26, 29.27,
29.3, 30, 31.1, 31.2, 31.3, 31.4, 31.5, 31.9, 32.1, 32.2, 32.3,
33.11, 33.12, 33.13, 33.2, 33.3, 34.1, 34.2, 34.3, 35.11, 35.12,
35.2, 35.3, 35.91, 35.92, 35.99, 36.1, 36.91, 36.92, 36.93, 36.94,
36.99, 37.1, 37.2, 40.1, 40.2, 40.3, 41, 45.1, 45.2, 45.3, 45.4,
45.5, 50.1, 50.2, 50.3, 50.4, 50.5, 51.1, 51.21, 51.22, 51.31,
51.39, 51.41, 51.42, 51.43, 51.49, 51.5, 51.9, 52.11, 52.19,
52.2, 52.32, 52.31, 52.33, 52.34, 52.39, 52.4, 52.51, 52.52,
52.59, 52.6, 55.1, 55.2, 60.1, 60.21, 60.22, 60.23, 60.3, 61.1,
61.2, 62.1, 62.2, 63.01, 63.02, 63.03, 63.04, 63.09, 64.11, 64.12,
64.2, 65.11, 65.19, 65.91, 65.92, 65.99, 66.01, 66.03, 66.02,
67.11, 67.12, 67.19, 67.2, 70.1, 70.2, 71.11, 71.12, 71.13, 71.21,
71.22, 71.23, 71.29, 71.3, 72.1, 72.2, 72.3, 72.4, 72.5, 72.9,
73.1, 73.2, 74.11, 74.12, 74.13, 74.14, 74.21, 74.22, 74.3, 74.91,
74.92, 74.93, 74.94, 74.95, 74.99, 75.11, 75.12, 75.13, 75.14,
75.21, 75.22, 75.23, 75.3, 80.1, 80.21, 80.22, 80.3, 80.9, 85.11,
85.12, 85.19, 85.2, 85.31, 85.32, 90, 91.11, 91.12, 91.2, 91.91,
91.92, 91.99, 92.11, 92.12, 92.13, 92.14, 92.19, 92.2, 92.31,
92.32, 92.33, 92.41, 92.49, 93.01, 93.02, 93.03, 93.09, 95, 99
)
df1 %>%
format(nsmall = 2L) %>%
as.character() %>%
str_remove('\\.')
#> [1] " 111" " 113" " 112" " 121" " 122" " 130" " 140" " 150" " 200" " 500"
#> [11] "1010" "1020" "1030" "1110" "1120" "1310" "1320" "1200" "1410" "1421"
#> [21] "1422" "1429" "1511" "1512" "1513" "1514" "1520" "1531" "1532" "1533"
#> [31] "1542" "1549" "1541" "1543" "1544" "1551" "1552" "1553" "1554" "1600"
#> [41] "1711" "1721" "1712" "1722" "1723" "1729" "1730" "1810" "1820" "1911"
#> [51] "1912" "1920" "2010" "2021" "2022" "2023" "2029" "2101" "2102" "2109"
#> [61] "2212" "2211" "2213" "2219" "2221" "2222" "2230" "2310" "2320" "2330"
#> [71] "2411" "2412" "2413" "2430" "2423" "2421" "2424" "2422" "2429" "2511"
#> [81] "2519" "2520" "2610" "2694" "2695" "2693" "2692" "2691" "2696" "2699"
#> [91] "2710" "2720" "2731" "2732" "2811" "2812" "2813" "2891" "2892" "2893"
#> [101] "2899" "2911" "2912" "2913" "2914" "2915" "2919" "2921" "2922" "2929"
#> [111] "2924" "2923" "2925" "2926" "2927" "2930" "3000" "3110" "3120" "3130"
#> [121] "3140" "3150" "3190" "3210" "3220" "3230" "3311" "3312" "3313" "3320"
#> [131] "3330" "3410" "3420" "3430" "3511" "3512" "3520" "3530" "3591" "3592"
#> [141] "3599" "3610" "3691" "3692" "3693" "3694" "3699" "3710" "3720" "4010"
#> [151] "4020" "4030" "4100" "4510" "4520" "4530" "4540" "4550" "5010" "5020"
#> [161] "5030" "5040" "5050" "5110" "5121" "5122" "5131" "5139" "5141" "5142"
#> [171] "5143" "5149" "5150" "5190" "5211" "5219" "5220" "5232" "5231" "5233"
#> [181] "5234" "5239" "5240" "5251" "5252" "5259" "5260" "5510" "5520" "6010"
#> [191] "6021" "6022" "6023" "6030" "6110" "6120" "6210" "6220" "6301" "6302"
#> [201] "6303" "6304" "6309" "6411" "6412" "6420" "6511" "6519" "6591" "6592"
#> [211] "6599" "6601" "6603" "6602" "6711" "6712" "6719" "6720" "7010" "7020"
#> [221] "7111" "7112" "7113" "7121" "7122" "7123" "7129" "7130" "7210" "7220"
#> [231] "7230" "7240" "7250" "7290" "7310" "7320" "7411" "7412" "7413" "7414"
#> [241] "7421" "7422" "7430" "7491" "7492" "7493" "7494" "7495" "7499" "7511"
#> [251] "7512" "7513" "7514" "7521" "7522" "7523" "7530" "8010" "8021" "8022"
#> [261] "8030" "8090" "8511" "8512" "8519" "8520" "8531" "8532" "9000" "9111"
#> [271] "9112" "9120" "9191" "9192" "9199" "9211" "9212" "9213" "9214" "9219"
#> [281] "9220" "9231" "9232" "9233" "9241" "9249" "9301" "9302" "9303" "9309"
#> [291] "9500" "9900"
Created on 2020-02-22 by the reprex package (v0.3.0)
Multiply each element in the first column by 100 after turning it into a numeric.
That is,
as.numeric(df1)*100

How do I store values after for() loop function?

I've been struggling for a few days with this problem, so help would be much appreciated. I have a line in a function that goes like this:
sig <- which(!ma.sig[1,]==0)&which(!pricebreak[1,]==0) ## Retrieves signals
sig <- which(sig)
for (i in 1:length(sig))
cursig[i] <- cur[i]
}
Basically what I'm doing is calculating signals, and if these signals are 0 or 1 I want R to save the corresponding variables. So for example, here's what the signal table might look like:
>ma.sig(MergedData)
Eur JPY GBP CHF AUD CAD NZD SEK NOK
1 0 1 0 1 1 0 0 0
>price.break(MergedData)
Eur JPY GBP CHF AUD CAD NZD SEK NOK
1 0 1 0 1 1 0 1 1
And so on for 29 variables. And here's the original currency, cur, vector:
> cur
[1] "EUR" "JPY" "GBP" "CHF" "AUD" "CAD" "NZD" "SEK" "NOK" "CZK" "HUF" "ILS" "PLN" "RUB" "TRY"
[16] "ZAR" "BRL" "CLP" "COP" "MXN" "PEN" "CNY" "IDR" "INR" "KRW" "MYR" "SGD" "PHP" "THB"
So basically I want to save a variable cursig such that it displays only the currencies with a signal of 1. So I'll have something like this:
cursig
[1] "GBP" " AUD" "CAD"....
And so on for whichever currency displays 1 for both signal functions. My problem is that
cursig[i] <- cur[i]
Returns the very last currency for which the signals are true. I know this is probably a very rookie mistake, but a nudge in the right direction would be much appreciated.
EDIT:
Here's the full function:
new.trend <- function(MergedData)
{
ret <- as.list(rep(NA, length(MergedData)))
ma.sig <- ma.crossover(MergedData)
pricebreak <- price.channel(MergedData)
sig <- which(!ma.sig[1,]==0)&which(!pricebreak[1,]==0) ## Retrieves signals
sig <- which(sig)
cursig <- character() #Preparing to save currency variables
for (i in 1:length(sig)) { #Calculates output variables based on active signals
x <- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
dev20 <- (x[,5]-SMA(x[,5], n=20))/x[,5]*100
dev50 <- (x[,5]-SMA(x[,5], n=50))/x[,5]*100
RSI <- RSI(x[,5], n=14)
cursig <- c(cursig, cur[1])
ret[[i]] <- na.omit(merge(tail(dev20, n=1L), tail(dev50, n=1L), tail(RSI, n=1L)))
}
na.omit(do.call(merge,ret))
}
print(new.trend(MergedData))
The reason I'm using a for() loop is because MergedData consits of 29 dataframes such that MergedData[[1] returns something like:
Date EUR.OPEN EUR.HIGH EUR.LOW EUR.CLOSE EUR.LAST
1 2016-08-30 1.1153 1.1192 1.1153 1.1161 1.1161
2 2016-08-29 1.1158 1.1208 1.1158 1.1189 1.1189
3 2016-08-28 1.1181 1.1341 1.1181 1.1198 1.1198
4 2016-08-27 1.1181 1.1341 1.1181 1.1198 1.1198
5 2016-08-26 1.1181 1.1341 1.1181 1.1198 1.1198
And so on for 29 currencies listed in cur.
Sample dput is here:
tzone = "", class = c("POSIXct",
"POSIXt")), PHP.OPEN = c(46.385, 46.283, 46.283, 46.283,
46.283, 46.33, 46.45, 46.45, 46.5, 46.29, 46.29, 46.29, 46.235,
46.28, 46.225, 46.445, 46.455, 46.455, 46.455, 46.365, 46.73,
46.85, 46.423, 46.05, 46.05, 46.05, 46.975, 46.03, 46.035,
46.915, 47.017, 47.017, 47.017, 47.05, 46.825, 47.105, 47.12,
47, 47, 47, 47.055, 46.015, 46.725, 46.675, 46.671, 46.671,
46.671, 47.019, 47, 47.055, 47.033, 47, 47, 47, 46.85, 46.765,
46.765, 46.753, 46.465, 46.465, 46.465, 46.035, 46.49, 45.93,
46.955, 46.51, 46.51, 46.51, 46.475, 46.365, 46.31, 46.3,
44.623, 44.623, 44.623, 46.285, 46.31, 46.073, 46.07, 46.06,
46.06, 46.06, 45.859, 46, 45.728, 46.2, 46.452, 46.452, 46.452,
46.53, 46.64, 46.653, 46.69, 46.614, 46.614, 46.614, 46.429,
46.63, 46.788, 46.69, 46.714, 46.714, 46.714, 46.705, 46.465,
46.325, 46.055, 46.55, 46.55, 46.55, 46.458, 46.53, 46.753,
47.085, 47.085, 47.085, 47.085, 47.118, 46.595, 46.845, 46.225,
46.66, 46.66, 46.66, 46.722, 46.64, 46.728, 46.683, 46.285,
46.285, 46.285, 46.224, 46.04, 46.055, 46.06, 46.049, 46.049,
46.049, 46.154, 45.903, 46.017, 46, 46.12, 46.12, 46.12,
46.07, 46.165, 46.153, 45, 45.95, 45.95, 45.95, 45.91, 46.02,
46.235, 46.325, 46.227, 46.227, 46.227, 46.227, 46.227, 46.16,
46, 46.168, 46.168, 46.168, 46.357, 46.475, 46.61, 46.439,
46.595, 46.595, 46.595, 46.653, 46.835, 46.285, 46.772, 46.861,
46.861, 46.861, 47.02, 47.225, 47.3, 47.525, 47.076, 47.076,
47.076, 47.62, 47.613, 47.575, 47.585, 47.552, 47.552, 47.552,
47.51, 47.45, 47.403, 47.435, 47.45, 47.45, 47.45, 47.375,
47.445, 47, 47.665, 47.665, 47.665, 47.665, 47.719, 47.825,
47.67, 47.623, 47.615, 47.615, 47.615, 47.717, 47.809, 47.869,
47.72, 47.8, 47.8, 47.8, 47.695, 47.67, 47.586, 47.635, 47.63,
47.63, 47.63, 47.55, 47.335, 47.2, 47.233, 46.92, 46.92,
46.92, 46.98, 46.82, 46.875, 47, 47.17, 47.17, 47.17), PHP.HIGH = c(46.535,
46.438, 46.438, 46.438, 46.438, 46.583, 46.645, 46.59, 46.702,
46.488, 46.488, 46.488, 46.41, 46.88, 46.88, 46.77, 46.865,
46.865, 46.865, 46.8, 46.865, 46.975, 47.02, 47.04, 47.04,
47.04, 47.075, 47.358, 47.487, 47.03, 47.135, 47.135, 47.135,
47.18, 47.228, 47.24, 47.228, 47.155, 47.155, 47.155, 47.23,
47.158, 46.96, 46.89, 47.055, 47.055, 47.055, 47.22, 47.435,
47.49, 47.32, 47.585, 47.585, 47.585, 47.112, 47.345, 47.345,
46.895, 47.065, 47.065, 47.065, 47.935, 47.98, 47.95, 47.183,
46.975, 46.975, 46.975, 46.587, 46.64, 46.388, 46.445, 46.475,
46.475, 46.475, 46.455, 46.479, 47.065, 46.222, 46.155, 46.155,
46.155, 46.388, 46.12, 46.265, 46.45, 46.982, 46.982, 46.982,
46.615, 46.79, 47.065, 46.825, 46.71, 46.71, 46.71, 46.788,
46.889, 46.925, 46.86, 46.86, 46.86, 46.86, 46.947, 46.705,
46.457, 46.655, 46.8, 46.8, 46.8, 46.715, 46.75, 47.205,
47.385, 47.385, 47.385, 47.385, 47.245, 47.132, 47.75, 47.041,
46.964, 46.964, 46.964, 46.878, 46.842, 46.94, 46.874, 46.68,
46.68, 46.68, 46.46, 46.225, 46.16, 46.2, 46.25, 46.25, 46.25,
46.306, 46.487, 46.14, 46.18, 46.266, 46.266, 46.266, 46.17,
46.338, 46.295, 46.105, 47.02, 47.02, 47.02, 46.085, 46.262,
46.439, 46.537, 46.463, 46.463, 46.463, 46.463, 46.463, 46.39,
46.577, 46.379, 46.379, 46.379, 46.58, 46.925, 46.83, 46.607,
46.795, 46.795, 46.795, 46.855, 47.025, 47.035, 46.925, 47.125,
47.125, 47.125, 47.252, 47.307, 47.5, 47.605, 47.603, 47.603,
47.603, 47.62, 47.717, 47.66, 47.705, 47.905, 47.905, 47.905,
47.595, 47.695, 47.59, 47.555, 47.74, 47.74, 47.74, 47.488,
47.632, 47.795, 47.757, 47.757, 47.757, 47.757, 47.8, 47.925,
47.79, 47.74, 47.775, 47.775, 47.775, 47.945, 47.995, 48.005,
47.9, 47.911, 47.911, 47.911, 47.958, 47.895, 47.755, 47.885,
47.78, 47.78, 47.78, 47.748, 47.55, 47.46, 47.335, 47.173,
47.173, 47.173, 47.14, 47.062, 47.188, 47.158, 47.17, 47.17,
47.17), PHP.LOW = c(46.385, 46.283, 46.283, 46.283, 46.283,
46.33, 46.45, 46.45, 46.5, 46.29, 46.29, 46.29, 46.235, 46.28,
46.225, 46.445, 46.455, 46.455, 46.455, 46.365, 46.73, 46.85,
46.423, 46.05, 46.05, 46.05, 46.975, 46.03, 46.035, 46.915,
47.017, 47.017, 47.017, 47.05, 46.825, 47.105, 47.12, 47,
47, 47, 47.055, 46.015, 46.725, 46.675, 46.671, 46.671, 46.671,
47.019, 47, 47.055, 47.033, 47, 47, 47, 46.85, 46.765, 46.765,
46.753, 46.465, 46.465, 46.465, 46.035, 46.49, 45.93, 46.955,
46.51, 46.51, 46.51, 46.475, 46.365, 46.31, 46.3, 44.623,
44.623, 44.623, 46.285, 46.31, 46.073, 46.07, 46.06, 46.06,
46.06, 45.859, 46, 45.728, 46.2, 46.452, 46.452, 46.452,
46.53, 46.64, 46.653, 46.69, 46.614, 46.614, 46.614, 46.429,
46.63, 46.788, 46.69, 46.714, 46.714, 46.714, 46.705, 46.465,
46.325, 46.055, 46.55, 46.55, 46.55, 46.458, 46.53, 46.753,
47.085, 47.085, 47.085, 47.085, 47.118, 46.595, 46.845, 46.225,
46.66, 46.66, 46.66, 46.722, 46.64, 46.728, 46.683, 46.285,
46.285, 46.285, 46.224, 46.04, 46.055, 46.06, 46.049, 46.049,
46.049, 46.154, 45.903, 46.017, 46, 46.12, 46.12, 46.12,
46.07, 46.165, 46.153, 45, 45.95, 45.95, 45.95, 45.91, 46.02,
46.235, 46.325, 46.227, 46.227, 46.227, 46.227, 46.227, 46.16,
46, 46.168, 46.168, 46.168, 46.357, 46.475, 46.61, 46.439,
46.595, 46.595, 46.595, 46.653, 46.835, 46.285, 46.772, 46.861,
46.861, 46.861, 47.02, 47.225, 47.3, 47.525, 47.076, 47.076,
47.076, 47.62, 47.613, 47.575, 47.585, 47.552, 47.552, 47.552,
47.51, 47.45, 47.403, 47.435, 47.45, 47.45, 47.45, 47.375,
47.445, 47, 47.665, 47.665, 47.665, 47.665, 47.719, 47.825,
47.67, 47.623, 47.615, 47.615, 47.615, 47.717, 47.809, 47.869,
47.72, 47.8, 47.8, 47.8, 47.695, 47.67, 47.586, 47.635, 47.63,
47.63, 47.63, 47.55, 47.335, 47.2, 47.233, 46.92, 46.92,
46.92, 46.98, 46.82, 46.875, 47, 47.17, 47.17, 47.17), PHP.CLOSE = c(46.46,
46.36, 46.36, 46.36, 46.36, 46.345, 46.535, 46.45, 46.58,
46.45, 46.45, 46.45, 46.28, 46.41, 46.88, 46.455, 46.6, 46.6,
46.6, 46.79, 46.75, 46.85, 46.835, 46.9, 46.9, 46.9, 47.02,
47.035, 46.961, 46.94, 47.11, 47.11, 47.11, 47.07, 47.18,
47.14, 47.15, 47.12, 47.12, 47.12, 47.077, 46.725, 46.94,
46.714, 46.85, 46.85, 46.85, 47.05, 47.21, 47.321, 47.31,
47.125, 47.125, 47.125, 47, 47.03, 47.03, 46.775, 46.915,
46.915, 46.915, 47.085, 46.965, 46.895, 47.03, 46.95, 46.95,
46.95, 46.51, 46.475, 46.38, 46.335, 46.425, 46.425, 46.425,
46.43, 46.43, 46.31, 46.08, 46.13, 46.13, 46.13, 46.055,
46.01, 46.11, 46.225, 46.465, 46.465, 46.465, 46.53, 46.64,
46.75, 46.75, 46.635, 46.635, 46.635, 46.69, 46.785, 46.92,
46.788, 46.75, 46.75, 46.75, 46.8, 46.66, 46.42, 46.46, 46.555,
46.555, 46.555, 46.647, 46.555, 46.757, 47.09, 47.09, 47.09,
47.09, 47.24, 47.08, 46.89, 46.965, 46.89, 46.89, 46.89,
46.77, 46.78, 46.76, 46.85, 46.645, 46.645, 46.645, 46.44,
46.225, 46.093, 46.185, 46.065, 46.065, 46.065, 46.25, 46.085,
46.018, 46.122, 46.135, 46.135, 46.135, 46.1, 46.2, 46.26,
46.08, 46.015, 46.015, 46.015, 46.07, 46.028, 46.35, 46.34,
46.395, 46.395, 46.395, 46.395, 46.395, 46.285, 46.33, 46.36,
46.36, 46.36, 46.38, 46.785, 46.83, 46.595, 46.62, 46.62,
46.62, 46.695, 46.855, 46.958, 46.92, 46.946, 46.946, 46.946,
47.125, 47.298, 47.35, 47.558, 47.515, 47.515, 47.515, 47.62,
47.625, 47.635, 47.619, 47.665, 47.665, 47.665, 47.55, 47.45,
47.573, 47.45, 47.74, 47.74, 47.74, 47.45, 47.47, 47.671,
47.665, 47.665, 47.665, 47.665, 47.775, 47.86, 47.685, 47.69,
47.65, 47.65, 47.65, 47.743, 47.815, 47.997, 47.89, 47.805,
47.805, 47.805, 47.935, 47.89, 47.67, 47.706, 47.745, 47.745,
47.745, 47.64, 47.542, 47.45, 47.269, 47.158, 47.158, 47.158,
47.01, 47.025, 46.89, 47.125, 47.17, 47.17, 47.17), PHP.LAST = c(46.46,
46.36, 46.36, 46.36, 46.36, 46.345, 46.535, 46.45, 46.58,
46.45, 46.45, 46.45, 46.28, 46.41, 46.88, 46.455, 46.6, 46.6,
46.6, 46.79, 46.75, 46.85, 46.835, 46.9, 46.9, 46.9, 47.02,
47.035, 46.961, 46.94, 47.11, 47.11, 47.11, 47.07, 47.18,
47.14, 47.15, 47.12, 47.12, 47.12, 47.077, 46.725, 46.94,
46.714, 46.85, 46.85, 46.85, 47.05, 47.21, 47.321, 47.31,
47.125, 47.125, 47.125, 47, 47.03, 47.03, 46.775, 46.915,
46.915, 46.915, 47.085, 46.965, 46.895, 47.03, 46.95, 46.95,
46.95, 46.51, 46.475, 46.38, 46.335, 46.425, 46.425, 46.425,
46.43, 46.43, 46.31, 46.08, 46.13, 46.13, 46.13, 46.055,
46.01, 46.11, 46.225, 46.465, 46.465, 46.465, 46.53, 46.64,
46.75, 46.75, 46.635, 46.635, 46.635, 46.69, 46.785, 46.92,
46.788, 46.75, 46.75, 46.75, 46.8, 46.66, 46.42, 46.46, 46.555,
46.555, 46.555, 46.647, 46.555, 46.757, 47.09, 47.09, 47.09,
47.09, 47.24, 47.08, 46.89, 46.965, 46.89, 46.89, 46.89,
46.77, 46.78, 46.76, 46.85, 46.645, 46.645, 46.645, 46.44,
46.225, 46.093, 46.185, 46.065, 46.065, 46.065, 46.25, 46.085,
46.018, 46.122, 46.135, 46.135, 46.135, 46.1, 46.2, 46.26,
46.08, 46.015, 46.015, 46.015, 46.07, 46.028, 46.35, 46.34,
46.395, 46.395, 46.395, 46.395, 46.395, 46.285, 46.33, 46.36,
46.36, 46.36, 46.38, 46.785, 46.83, 46.595, 46.62, 46.62,
46.62, 46.695, 46.855, 46.958, 46.92, 46.946, 46.946, 46.946,
47.125, 47.298, 47.35, 47.558, 47.515, 47.515, 47.515, 47.62,
47.625, 47.635, 47.619, 47.665, 47.665, 47.665, 47.55, 47.45,
47.573, 47.45, 47.74, 47.74, 47.74, 47.45, 47.47, 47.671,
47.665, 47.665, 47.665, 47.665, 47.775, 47.86, 47.685, 47.69,
47.65, 47.65, 47.65, 47.743, 47.815, 47.997, 47.89, 47.805,
47.805, 47.805, 47.935, 47.89, 47.67, 47.706, 47.745, 47.745,
47.745, 47.64, 47.542, 47.45, 47.269, 47.158, 47.158, 47.158,
47.01, 47.025, 46.89, 47.125, 47.17, 47.17, 47.17)), .Names = c("Date",
"PHP.OPEN", "PHP.HIGH", "PHP.LOW", "PHP.CLOSE", "PHP.LAST"
), row.names = c(NA, -243L), class = "data.frame"), structure(list(
Date = structure(c(1472533200, 1472446800, 1472360400,
1472274000, 1472187600, 1472101200, 1472014800, 1471928400,
1471842000, 1471755600, 1471669200, 1471582800, 1471496400,
1471410000, 1471323600, 1471237200, 1471150800, 1471064400,
1470978000, 1470891600, 1470805200, 1470718800, 1470632400,
1470546000, 1470459600, 1470373200, 1470286800, 1470200400,
1470114000, 1470027600, 1469941200, 1469854800, 1469768400,
1469682000, 1469595600, 1469509200, 1469422800, 1469336400,
1469250000, 1469163600, 1469077200, 1468990800, 1468904400,
1468818000, 1468731600, 1468645200, 1468558800, 1468472400,
1468386000, 1468299600, 1468213200, 1468126800, 1468040400,
1467954000, 1467867600, 1467781200, 1467694800, 1467608400,
1467522000, 1467435600, 1467349200, 1467262800, 1467176400,
1467090000, 1467003600, 1466917200, 1466830800, 1466744400,
1466658000, 1466571600, 1466485200, 1466398800, 1466312400,
1466226000, 1466139600, 1466053200, 1465966800, 1465880400,
1465794000, 1465707600, 1465621200, 1465534800, 1465448400,
1465362000, 1465275600, 1465189200, 1465102800, 1465016400,
1464930000, 1464843600, 1464757200, 1464670800, 1464584400,
1464498000, 1464411600, 1464325200, 1464238800, 1464152400,
1464066000, 1463979600, 1463893200, 1463806800, 1463720400,
1463634000, 1463547600, 1463461200, 1463374800, 1463288400,
1463202000, 1463115600, 1463029200, 1462942800, 1462856400,
1462770000, 1462683600, 1462597200, 1462510800, 1462424400,
1462338000, 1462251600, 1462165200, 1462078800, 1461992400,
1461906000, 1461819600, 1461733200, 1461646800, 1461560400,
1461474000, 1461387600, 1461301200, 1461214800, 1461128400,
1461042000, 1460955600, 1460869200, 1460782800, 1460696400,
1460610000, 1460523600, 1460437200, 1460350800, 1460264400,
1460178000, 1460091600, 1460005200, 1459918800, 1459832400,
1459746000, 1459659600, 1459573200, 1459486800, 1459400400,
1459314000, 1459227600, 1459141200, 1459054800, 1458968400,
1458882000, 1458795600, 1458709200, 1458622800, 1458536400,
1458450000, 1458363600, 1458277200, 1458190800, 1458104400,
1458018000, 1457931600, 1457848800, 1457762400, 1457676000,
1457589600, 1457503200, 1457416800, 1457330400, 1457244000,
1457157600, 1457071200, 1456984800, 1456898400, 1456812000,
1456725600, 1456639200, 1456552800, 1456466400, 1456380000,
1456293600, 1456207200, 1456120800, 1456034400, 1455948000,
1455861600, 1455775200, 1455688800, 1455602400, 1455516000,
1455429600, 1455343200, 1455256800, 1455170400, 1455084000,
1454997600, 1454911200, 1454824800, 1454738400, 1454652000,
1454565600, 1454479200, 1454392800, 1454306400, 1454220000,
1454133600, 1454047200, 1453960800, 1453874400, 1453788000,
1453701600, 1453615200, 1453528800, 1453442400, 1453356000,
1453269600, 1453183200, 1453096800, 1453010400, 1452924000,
1452837600, 1452751200, 1452664800, 1452578400, 1452492000,
1452405600, 1452319200, 1452232800, 1452146400, 1452060000,
1451973600, 1451887200, 1451800800, 1451714400, 1451628000
), tzone = "", class = c("POSIXct", "POSIXt")), THB.OPEN = c(34.53,
34.596, 34.506, 34.506, 34.506, 34.539, 34.573, 34.564,
34.607, 34.528, 34.528, 34.528, 34.531, 34.577, 34.52,
34.577, 34.696, 34.696, 34.696, 34.731, 34.738, 34.911,
34.901, 34.796, 34.796, 34.796, 34.886, 34.739, 34.74,
34.72, 34.8, 34.8, 34.8, 34.84, 34.951, 34.98, 34.905,
34.87, 34.87, 34.87, 34.95, 34.97, 34.931, 34.918, 34.907,
34.907, 34.907, 35.029, 35.13, 35.103, 35.049, 35.169,
35.169, 35.169, 35.145, 35.149, 35.012, 35.011, 35.06,
35.06, 35.06, 35.097, 35.175, 35.238, 35.257, 35.114,
35.114, 35.114, 35.146, 35.173, 35.15, 35.162, 35.225,
35.225, 35.225, 35.151, 35.24, 35.12, 35.16, 35.147,
35.147, 35.147, 35.085, 35.189, 35.217, 35.26, 35.545,
35.545, 35.545, 35.57, 35.64, 35.691, 35.69, 35.56, 35.56,
35.56, 35.571, 35.625, 35.664, 35.56, 35.622, 35.622,
35.622, 35.641, 35.486, 35.32, 35.341, 35.311, 35.311,
35.311, 35.217, 35.19, 35.193, 35.09, 35.126, 35.126,
35.126, 35.075, 34.99, 34.83, 34.83, 34.885, 34.885,
34.885, 35.007, 35.09, 35.08, 35.052, 35.02, 35.02, 35.02,
34.883, 34.825, 34.88, 35.01, 35.051, 35.051, 35.051,
35.024, 34.951, 35.005, 35.04, 35.09, 35.09, 35.09, 35.15,
35.214, 35.237, 35.12, 35.09, 35.09, 35.09, 35.159, 35.189,
35.323, 35.274, 35.265, 35.265, 35.265, 35.188, 34.917,
34.88, 34.85, 34.745, 34.745, 34.745, 34.77, 34.99, 35.07,
35.05, 35.064, 35.064, 35.064, 35.239, 35.287, 35.365,
35.349, 35.385, 35.385, 35.385, 35.476, 35.54, 35.588,
35.618, 35.63, 35.63, 35.63, 35.65, 35.69, 35.715, 35.717,
35.54, 35.54, 35.54, 35.537, 35.6, 35.59, 35.552, 35.228,
35.228, 35.228, 35.228, 35.3, 35.388, 35.495, 35.48,
35.48, 35.48, 35.55, 35.77, 35.579, 35.591, 35.684, 35.684,
35.684, 35.775, 35.77, 35.89, 35.925, 36.026, 36.026,
36.026, 36.235, 36.272, 36.26, 36.29, 36.28, 36.28, 36.28,
36.256, 36.237, 36.235, 36.25, 36.17, 36.17, 36.17, 36.226,
36.103, 36.08, 36.033, 36.02, 36.02, 36.02), THB.HIGH = c(34.655,
34.72, 34.601, 34.601, 34.601, 34.675, 34.69, 34.676,
34.764, 34.671, 34.671, 34.671, 34.69, 34.737, 34.65,
34.82, 34.86, 34.86, 34.86, 34.838, 34.967, 35.005, 35.065,
34.93, 34.93, 34.93, 35.039, 34.95, 34.84, 34.91, 34.92,
34.92, 34.92, 34.967, 35.074, 35.086, 35.08, 35, 35,
35, 35.088, 35.09, 35.04, 35.03, 35.085, 35.085, 35.085,
35.23, 35.257, 35.206, 35.225, 35.264, 35.264, 35.264,
35.239, 35.281, 35.198, 35.125, 35.16, 35.16, 35.16,
35.228, 35.295, 35.371, 35.435, 35.546, 35.546, 35.546,
35.244, 35.29, 35.24, 35.284, 35.356, 35.356, 35.356,
35.254, 35.39, 35.303, 35.295, 35.295, 35.295, 35.295,
35.24, 35.241, 35.327, 35.411, 35.64, 35.64, 35.64, 35.704,
35.77, 35.755, 35.8, 35.701, 35.701, 35.701, 35.68, 35.795,
35.787, 35.706, 35.736, 35.736, 35.736, 35.8, 35.625,
35.557, 35.461, 35.466, 35.466, 35.466, 35.34, 35.294,
35.267, 35.166, 35.193, 35.193, 35.193, 35.19, 35.184,
34.94, 34.934, 35.009, 35.009, 35.009, 35.16, 35.195,
35.222, 35.17, 35.095, 35.095, 35.095, 35.095, 34.949,
35.02, 35.11, 35.12, 35.12, 35.12, 35.211, 35.055, 35.07,
35.112, 35.234, 35.234, 35.234, 35.253, 35.31, 35.39,
35.29, 35.175, 35.175, 35.175, 35.262, 35.365, 35.44,
35.408, 35.365, 35.365, 35.365, 35.395, 35.13, 34.963,
34.952, 34.925, 34.925, 34.925, 34.975, 35.145, 35.15,
35.151, 35.26, 35.26, 35.26, 35.31, 35.393, 35.47, 35.495,
35.46, 35.46, 35.46, 35.559, 35.656, 35.655, 35.763,
35.707, 35.707, 35.707, 35.714, 35.759, 35.776, 35.781,
35.75, 35.75, 35.75, 35.63, 35.68, 35.671, 35.69, 35.64,
35.64, 35.64, 35.325, 35.428, 35.539, 35.612, 35.651,
35.651, 35.651, 35.755, 35.87, 35.771, 35.77, 35.861,
35.861, 35.861, 35.885, 35.874, 36.045, 36.055, 36.253,
36.253, 36.253, 36.29, 36.327, 36.325, 36.382, 36.374,
36.374, 36.374, 36.345, 36.338, 36.375, 36.345, 36.327,
36.327, 36.327, 36.35, 36.257, 36.177, 36.19, 36.033,
36.033, 36.033), THB.LOW = c(34.53, 34.596, 34.506, 34.506,
34.506, 34.539, 34.573, 34.564, 34.607, 34.528, 34.528,
34.528, 34.531, 34.577, 34.52, 34.577, 34.696, 34.696,
34.696, 34.731, 34.738, 34.911, 34.901, 34.796, 34.796,
34.796, 34.886, 34.739, 34.74, 34.72, 34.8, 34.8, 34.8,
34.84, 34.951, 34.98, 34.905, 34.87, 34.87, 34.87, 34.95,
34.97, 34.931, 34.918, 34.907, 34.907, 34.907, 35.029,
35.13, 35.103, 35.049, 35.169, 35.169, 35.169, 35.145,
35.149, 35.012, 35.011, 35.06, 35.06, 35.06, 35.097,
35.175, 35.238, 35.257, 35.114, 35.114, 35.114, 35.146,
35.173, 35.15, 35.162, 35.225, 35.225, 35.225, 35.151,
35.24, 35.12, 35.16, 35.147, 35.147, 35.147, 35.085,
35.189, 35.217, 35.26, 35.545, 35.545, 35.545, 35.57,
35.64, 35.691, 35.69, 35.56, 35.56, 35.56, 35.571, 35.625,
35.664, 35.56, 35.622, 35.622, 35.622, 35.641, 35.486,
35.32, 35.341, 35.311, 35.311, 35.311, 35.217, 35.19,
35.193, 35.09, 35.126, 35.126, 35.126, 35.075, 34.99,
34.83, 34.83, 34.885, 34.885, 34.885, 35.007, 35.09,
35.08, 35.052, 35.02, 35.02, 35.02, 34.883, 34.825, 34.88,
35.01, 35.051, 35.051, 35.051, 35.024, 34.951, 35.005,
35.04, 35.09, 35.09, 35.09, 35.15, 35.214, 35.237, 35.12,
35.09, 35.09, 35.09, 35.159, 35.189, 35.323, 35.274,
35.265, 35.265, 35.265, 35.188, 34.917, 34.88, 34.85,
34.745, 34.745, 34.745, 34.77, 34.99, 35.07, 35.05, 35.064,
35.064, 35.064, 35.239, 35.287, 35.365, 35.349, 35.385,
35.385, 35.385, 35.476, 35.54, 35.588, 35.618, 35.63,
35.63, 35.63, 35.65, 35.69, 35.715, 35.717, 35.54, 35.54,
35.54, 35.537, 35.6, 35.59, 35.552, 35.228, 35.228, 35.228,
35.228, 35.3, 35.388, 35.495, 35.48, 35.48, 35.48, 35.55,
35.77, 35.579, 35.591, 35.684, 35.684, 35.684, 35.775,
35.77, 35.89, 35.925, 36.026, 36.026, 36.026, 36.235,
36.272, 36.26, 36.29, 36.28, 36.28, 36.28, 36.256, 36.237,
36.235, 36.25, 36.17, 36.17, 36.17, 36.226, 36.103, 36.08,
36.033, 36.02, 36.02, 36.02), THB.CLOSE = c(34.558, 34.601,
34.565, 34.565, 34.565, 34.565, 34.618, 34.64, 34.67,
34.635, 34.635, 34.635, 34.605, 34.7, 34.575, 34.61,
34.81, 34.81, 34.81, 34.76, 34.751, 34.965, 34.974, 34.822,
34.822, 34.822, 34.927, 34.94, 34.75, 34.77, 34.83, 34.83,
34.83, 34.868, 34.97, 35.01, 35.05, 34.93, 34.93, 34.93,
34.995, 34.989, 35.01, 35.005, 34.94, 34.94, 34.94, 35.03,
35.16, 35.138, 35.11, 35.25, 35.25, 35.25, 35.173, 35.214,
35.134, 35.048, 35.086, 35.086, 35.086, 35.138, 35.23,
35.29, 35.35, 35.339, 35.339, 35.339, 35.173, 35.24,
35.173, 35.21, 35.235, 35.235, 35.235, 35.24, 35.25,
35.3, 35.18, 35.26, 35.26, 35.26, 35.21, 35.21, 35.23,
35.28, 35.629, 35.629, 35.629, 35.61, 35.67, 35.705,
35.75, 35.658, 35.658, 35.658, 35.6, 35.71, 35.73, 35.66,
35.679, 35.679, 35.679, 35.71, 35.6, 35.49, 35.37, 35.43,
35.43, 35.43, 35.32, 35.27, 35.236, 35.13, 35.149, 35.149,
35.149, 35.179, 35.184, 34.92, 34.841, 34.92, 34.92,
34.92, 35.02, 35.15, 35.16, 35.11, 35.04, 35.04, 35.04,
35.01, 34.86, 34.91, 35.03, 35.065, 35.065, 35.065, 35.12,
35.036, 35.02, 35.07, 35.12, 35.12, 35.12, 35.205, 35.256,
35.32, 35.263, 35.105, 35.105, 35.105, 35.185, 35.235,
35.426, 35.36, 35.27, 35.27, 35.27, 35.35, 35.118, 34.91,
34.89, 34.85, 34.85, 34.85, 34.78, 35.02, 35.132, 35.08,
35.16, 35.16, 35.16, 35.25, 35.32, 35.425, 35.42, 35.403,
35.403, 35.403, 35.51, 35.57, 35.625, 35.64, 35.64, 35.64,
35.64, 35.68, 35.7, 35.74, 35.755, 35.745, 35.745, 35.745,
35.548, 35.61, 35.61, 35.65, 35.58, 35.58, 35.58, 35.245,
35.36, 35.489, 35.51, 35.497, 35.497, 35.497, 35.56,
35.841, 35.76, 35.605, 35.73, 35.73, 35.73, 35.825, 35.79,
35.908, 36.021, 36.037, 36.037, 36.037, 36.263, 36.3,
36.27, 36.32, 36.366, 36.366, 36.366, 36.313, 36.25,
36.33, 36.28, 36.307, 36.307, 36.307, 36.285, 36.22,
36.15, 36.14, 36.02, 36.02, 36.02), THB.LAST = c(34.558,
34.601, 34.565, 34.565, 34.565, 34.565, 34.618, 34.64,
34.67, 34.635, 34.635, 34.635, 34.605, 34.7, 34.575,
34.61, 34.81, 34.81, 34.81, 34.76, 34.751, 34.965, 34.974,
34.822, 34.822, 34.822, 34.927, 34.94, 34.75, 34.77,
34.83, 34.83, 34.83, 34.868, 34.97, 35.01, 35.05, 34.93,
34.93, 34.93, 34.995, 34.989, 35.01, 35.005, 34.94, 34.94,
34.94, 35.03, 35.16, 35.138, 35.11, 35.25, 35.25, 35.25,
35.173, 35.214, 35.134, 35.048, 35.086, 35.086, 35.086,
35.138, 35.23, 35.29, 35.35, 35.339, 35.339, 35.339,
35.173, 35.24, 35.173, 35.21, 35.235, 35.235, 35.235,
35.24, 35.25, 35.3, 35.18, 35.26, 35.26, 35.26, 35.21,
35.21, 35.23, 35.28, 35.629, 35.629, 35.629, 35.61, 35.67,
35.705, 35.75, 35.658, 35.658, 35.658, 35.6, 35.71, 35.73,
35.66, 35.679, 35.679, 35.679, 35.71, 35.6, 35.49, 35.37,
35.43, 35.43, 35.43, 35.32, 35.27, 35.236, 35.13, 35.149,
35.149, 35.149, 35.179, 35.184, 34.92, 34.841, 34.92,
34.92, 34.92, 35.02, 35.15, 35.16, 35.11, 35.04, 35.04,
35.04, 35.01, 34.86, 34.91, 35.03, 35.065, 35.065, 35.065,
35.12, 35.036, 35.02, 35.07, 35.12, 35.12, 35.12, 35.205,
35.256, 35.32, 35.263, 35.105, 35.105, 35.105, 35.185,
35.235, 35.426, 35.36, 35.27, 35.27, 35.27, 35.35, 35.118,
34.91, 34.89, 34.85, 34.85, 34.85, 34.78, 35.02, 35.132,
35.08, 35.16, 35.16, 35.16, 35.25, 35.32, 35.425, 35.42,
35.403, 35.403, 35.403, 35.51, 35.57, 35.625, 35.64,
35.64, 35.64, 35.64, 35.68, 35.7, 35.74, 35.755, 35.745,
35.745, 35.745, 35.548, 35.61, 35.61, 35.65, 35.58, 35.58,
35.58, 35.245, 35.36, 35.489, 35.51, 35.497, 35.497,
35.497, 35.56, 35.841, 35.76, 35.605, 35.73, 35.73, 35.73,
35.825, 35.79, 35.908, 36.021, 36.037, 36.037, 36.037,
36.263, 36.3, 36.27, 36.32, 36.366, 36.366, 36.366, 36.313,
36.25, 36.33, 36.28, 36.307, 36.307, 36.307, 36.285,
36.22, 36.15, 36.14, 36.02, 36.02, 36.02)), .Names = c("Date",
"THB.OPEN", "THB.HIGH", "THB.LOW", "THB.CLOSE", "THB.LAST"
), row.names = c(NA, -243L), class = "data.frame"))
And the two functions listed within the original function is here:
price.channel <- function(MergedData)
{
ret <- as.list(rep(NA, length(MergedData)))
for (i in 1:length(MergedData)) {
x<- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
high <- runMax(x[,2], 20)
low <- runMin(x[,3], 20)
mid <- (high+low)/2
channel <- cbind(high, mid, low)
sig <- ifelse(sign(high-x[,5])>=0, sign(high-x[,5]), sign(low-x[,5]))
ret[[i]] <- sig
}
na.omit(do.call(merge, ret))
}
ma.crossover<- function(MergedData){
ma <- as.list(rep(NA, length(MergedData)))
for(i in 1:length(MergedData)) {
x <- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
ma20 <- SMA(x[,3], n=20)
ma50 <- SMA(x[,3], n=50)
ma[[i]] <- sign(ma20 - ma50)
}
na.omit(do.call(merge, ma))
}
And I want to create a table from new.trend with the following:
out.trend <- matrix(new.trend(MergedData), ncol = 3, byrow = TRUE, dimnames = list(paste0(cursig), c("% dev from 20MA", "% dev from 20MA", "RSI")))
I think manotheshark's answer is right about not needing a for loop and using intersect(), you could do it like this without relying on names():
The dummy data:
ma.sig <- read.table(text = "Eur JPY GBP CHF AUD CAD NZD SEK NOK
1 0 1 0 1 1 0 0 0", header = T)
pricebreak <- read.table(text = "Eur JPY GBP CHF AUD CAD NZD SEK NOK
1 0 1 0 1 1 0 1 1", , header = T)
cur <- c("EUR", "JPY","GBP", "CHF", "AUD", "CAD", "NZD", "SEK", "NOK", "CZK", "HUF", "ILS")
Manotheshark's method, without names():
sig <- intersect(which(!ma.sig[1,]==0), which(!pricebreak[1,]==0)) ## Retrieves signals
sig
[1] 1 3 5 6
cur[sig]
"EUR" "GBP" "AUD" "CAD"
Or your idea for a for loop with my comment:
cursig <- character()
for (i in sig) { #not 1:length(sig) thats always 1,2,3... in order
cursig <- c(cursig, cur[i])
}
cursig
[1] "EUR" "GBP" "AUD" "CAD"
If I understand what you're trying to get, a for loop should not be required. You can index the vectors on the conditions you're looking for
names(ma.sig[ma.sig == 1])
names(price.break[price.break == 1])
This will return the names that meet both conditions
intersect(names(ma.sig[ma.sig == 1]), names(price.break[price.break == 1]))
[1] "Eur" "GBP" "AUD" "CAD"

How to have R selectively calculate values for certain variables?

My dataset is a list of 29 dataframes, such that one data frame looks like this:
>MergedData[[1]]
Date EUR.HIGH EUR.LOW EUR.CLOSE
1 2016-08-30 1.1192 1.1153 1.1161
2 2016-08-29 1.1208 1.1158 1.1189
3 2016-08-28 1.1341 1.1181 1.1198
4 2016-08-27 1.1341 1.1181 1.1198
5 2016-08-26 1.1341 1.1181 1.1198
6 2016-08-25 1.1298 1.1259 1.1285
7 2016-08-24 1.1312 1.1245 1.1264
So using this list, I calculated 'signals' in R with values of -2,1 and 0. I want R to do calculations and leave them in an output for variables that have values that aren't zero. Here's what my signal looks like in R:
>price.break
EUR JPY GBP CHF AUD CAD NZD SEK
2016-02-19 NA NA NA NA NA NA NA NA
2016-02-20 0 -2 0 0 -2 0 0 0
2016-02-21 0 0 0 0 0 0 0 0
>ma.sig
EUR JPY GBP CHF AUD CAD NZD SEK
2016-02-19 NA NA NA NA NA NA NA NA
2016-02-20 0 1 0 0 1 0 0 0
2016-02-21 0 0 0 0 0 0 0 0
Since we have that both JPY and AUD have returned non-zero signals, I want R to calculate an output table that looks like this:
Currency Deviation from MA RSI
JPY
AUD
Here is my (rather terrible) attempt at trying to have R do this:
new.trend <- function(x)
{
ret <- as.list(rep(NA, length(x)))
for (i in 1:length(MergedData)){
x <- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
ma.sig <- ma.crossover(x)
pricebreak <- price.channel(x)
sig.col <- col(x)[which(!ma.sig[,i]&ma.sig[,i-1)]==0)&which(!pricebreak[,i]&pricebreak[,i-1]==0)]
sig.row <- row(x)[which(!ma.sig[,i]&ma.sig[,i-1)]==0)&which(!pricebreak[,i]&pricebreak[,i-1]==0)]
ma20 <- SMA(x[sig.row, sig.col], n=20)
ma50 <- SMA(x[sig.row, sig.col], n=50)
RSI <- RSI(x[sig.row, sig.col], n=14)
dev20 <- x[sig.row, sig.col]-ma20[sig.row, sig.col]/x[sig.row, sig.col]*100
dev50 <- x[sig.row, sig.col]-ma50[sig.row, sig.col]/x[sig.row, sig.col]*100
ret[[i]] <- merge(RSI, 20dev, 50dev)
}
na.omit(do.call(merge,ret))
}
With sig.col and sig.row, I'm hoping to extract the exact row/column number in order to selectively calculate the instances where we get nonnegative signals. I get the error saying 'incorrect number dimensions', and I have a strong feeling what I'm doing isn't correct anyway.
ma.crossover and pricebreak are just functions that calculate the following:
ma.crossover<- function(MergedData){
ma <- as.list(rep(NA, length(MergedData)))
for(i in 1:length(MergedData)) {
x <- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
ma20 <- SMA(x[,3], n=20)
ma50 <- SMA(x[,3], n=50)
ma[[i]] <- sign(ma20 - ma50)
}
na.omit(do.call(merge, ma))
}
##price channel
price.channel <- function(MergedData)
{
ret <- as.list(rep(NA, length(MergedData)))
for (i in 1:length(MergedData)) {
x<- MergedData[[i]]
x <- xts(x[,-1], order.by=x[,1])
high <- runMax(x[,2], 20)
low <- runMin(x[,3], 20)
mid <- (high+low)/2
channel <- cbind(high, mid, low)
ret[[i]] <- merge(sign(high-x[,5]), sign(x[,5]-low))
}
na.omit(do.call(merge, ret))
}
I've been stuck on this for some time, so comments or feedback would be very much appreciated. Here's a sample of my dput, if that helps:
tzone = "", class = c("POSIXct",
"POSIXt")), PHP.OPEN = c(46.385, 46.283, 46.283, 46.283,
46.283, 46.33, 46.45, 46.45, 46.5, 46.29, 46.29, 46.29, 46.235,
46.28, 46.225, 46.445, 46.455, 46.455, 46.455, 46.365, 46.73,
46.85, 46.423, 46.05, 46.05, 46.05, 46.975, 46.03, 46.035,
46.915, 47.017, 47.017, 47.017, 47.05, 46.825, 47.105, 47.12,
47, 47, 47, 47.055, 46.015, 46.725, 46.675, 46.671, 46.671,
46.671, 47.019, 47, 47.055, 47.033, 47, 47, 47, 46.85, 46.765,
46.765, 46.753, 46.465, 46.465, 46.465, 46.035, 46.49, 45.93,
46.955, 46.51, 46.51, 46.51, 46.475, 46.365, 46.31, 46.3,
44.623, 44.623, 44.623, 46.285, 46.31, 46.073, 46.07, 46.06,
46.06, 46.06, 45.859, 46, 45.728, 46.2, 46.452, 46.452, 46.452,
46.53, 46.64, 46.653, 46.69, 46.614, 46.614, 46.614, 46.429,
46.63, 46.788, 46.69, 46.714, 46.714, 46.714, 46.705, 46.465,
46.325, 46.055, 46.55, 46.55, 46.55, 46.458, 46.53, 46.753,
47.085, 47.085, 47.085, 47.085, 47.118, 46.595, 46.845, 46.225,
46.66, 46.66, 46.66, 46.722, 46.64, 46.728, 46.683, 46.285,
46.285, 46.285, 46.224, 46.04, 46.055, 46.06, 46.049, 46.049,
46.049, 46.154, 45.903, 46.017, 46, 46.12, 46.12, 46.12,
46.07, 46.165, 46.153, 45, 45.95, 45.95, 45.95, 45.91, 46.02,
46.235, 46.325, 46.227, 46.227, 46.227, 46.227, 46.227, 46.16,
46, 46.168, 46.168, 46.168, 46.357, 46.475, 46.61, 46.439,
46.595, 46.595, 46.595, 46.653, 46.835, 46.285, 46.772, 46.861,
46.861, 46.861, 47.02, 47.225, 47.3, 47.525, 47.076, 47.076,
47.076, 47.62, 47.613, 47.575, 47.585, 47.552, 47.552, 47.552,
47.51, 47.45, 47.403, 47.435, 47.45, 47.45, 47.45, 47.375,
47.445, 47, 47.665, 47.665, 47.665, 47.665, 47.719, 47.825,
47.67, 47.623, 47.615, 47.615, 47.615, 47.717, 47.809, 47.869,
47.72, 47.8, 47.8, 47.8, 47.695, 47.67, 47.586, 47.635, 47.63,
47.63, 47.63, 47.55, 47.335, 47.2, 47.233, 46.92, 46.92,
46.92, 46.98, 46.82, 46.875, 47, 47.17, 47.17, 47.17), PHP.HIGH = c(46.535,
46.438, 46.438, 46.438, 46.438, 46.583, 46.645, 46.59, 46.702,
46.488, 46.488, 46.488, 46.41, 46.88, 46.88, 46.77, 46.865,
46.865, 46.865, 46.8, 46.865, 46.975, 47.02, 47.04, 47.04,
47.04, 47.075, 47.358, 47.487, 47.03, 47.135, 47.135, 47.135,
47.18, 47.228, 47.24, 47.228, 47.155, 47.155, 47.155, 47.23,
47.158, 46.96, 46.89, 47.055, 47.055, 47.055, 47.22, 47.435,
47.49, 47.32, 47.585, 47.585, 47.585, 47.112, 47.345, 47.345,
46.895, 47.065, 47.065, 47.065, 47.935, 47.98, 47.95, 47.183,
46.975, 46.975, 46.975, 46.587, 46.64, 46.388, 46.445, 46.475,
46.475, 46.475, 46.455, 46.479, 47.065, 46.222, 46.155, 46.155,
46.155, 46.388, 46.12, 46.265, 46.45, 46.982, 46.982, 46.982,
46.615, 46.79, 47.065, 46.825, 46.71, 46.71, 46.71, 46.788,
46.889, 46.925, 46.86, 46.86, 46.86, 46.86, 46.947, 46.705,
46.457, 46.655, 46.8, 46.8, 46.8, 46.715, 46.75, 47.205,
47.385, 47.385, 47.385, 47.385, 47.245, 47.132, 47.75, 47.041,
46.964, 46.964, 46.964, 46.878, 46.842, 46.94, 46.874, 46.68,
46.68, 46.68, 46.46, 46.225, 46.16, 46.2, 46.25, 46.25, 46.25,
46.306, 46.487, 46.14, 46.18, 46.266, 46.266, 46.266, 46.17,
46.338, 46.295, 46.105, 47.02, 47.02, 47.02, 46.085, 46.262,
46.439, 46.537, 46.463, 46.463, 46.463, 46.463, 46.463, 46.39,
46.577, 46.379, 46.379, 46.379, 46.58, 46.925, 46.83, 46.607,
46.795, 46.795, 46.795, 46.855, 47.025, 47.035, 46.925, 47.125,
47.125, 47.125, 47.252, 47.307, 47.5, 47.605, 47.603, 47.603,
47.603, 47.62, 47.717, 47.66, 47.705, 47.905, 47.905, 47.905,
47.595, 47.695, 47.59, 47.555, 47.74, 47.74, 47.74, 47.488,
47.632, 47.795, 47.757, 47.757, 47.757, 47.757, 47.8, 47.925,
47.79, 47.74, 47.775, 47.775, 47.775, 47.945, 47.995, 48.005,
47.9, 47.911, 47.911, 47.911, 47.958, 47.895, 47.755, 47.885,
47.78, 47.78, 47.78, 47.748, 47.55, 47.46, 47.335, 47.173,
47.173, 47.173, 47.14, 47.062, 47.188, 47.158, 47.17, 47.17,
47.17), PHP.LOW = c(46.385, 46.283, 46.283, 46.283, 46.283,
46.33, 46.45, 46.45, 46.5, 46.29, 46.29, 46.29, 46.235, 46.28,
46.225, 46.445, 46.455, 46.455, 46.455, 46.365, 46.73, 46.85,
46.423, 46.05, 46.05, 46.05, 46.975, 46.03, 46.035, 46.915,
47.017, 47.017, 47.017, 47.05, 46.825, 47.105, 47.12, 47,
47, 47, 47.055, 46.015, 46.725, 46.675, 46.671, 46.671, 46.671,
47.019, 47, 47.055, 47.033, 47, 47, 47, 46.85, 46.765, 46.765,
46.753, 46.465, 46.465, 46.465, 46.035, 46.49, 45.93, 46.955,
46.51, 46.51, 46.51, 46.475, 46.365, 46.31, 46.3, 44.623,
44.623, 44.623, 46.285, 46.31, 46.073, 46.07, 46.06, 46.06,
46.06, 45.859, 46, 45.728, 46.2, 46.452, 46.452, 46.452,
46.53, 46.64, 46.653, 46.69, 46.614, 46.614, 46.614, 46.429,
46.63, 46.788, 46.69, 46.714, 46.714, 46.714, 46.705, 46.465,
46.325, 46.055, 46.55, 46.55, 46.55, 46.458, 46.53, 46.753,
47.085, 47.085, 47.085, 47.085, 47.118, 46.595, 46.845, 46.225,
46.66, 46.66, 46.66, 46.722, 46.64, 46.728, 46.683, 46.285,
46.285, 46.285, 46.224, 46.04, 46.055, 46.06, 46.049, 46.049,
46.049, 46.154, 45.903, 46.017, 46, 46.12, 46.12, 46.12,
46.07, 46.165, 46.153, 45, 45.95, 45.95, 45.95, 45.91, 46.02,
46.235, 46.325, 46.227, 46.227, 46.227, 46.227, 46.227, 46.16,
46, 46.168, 46.168, 46.168, 46.357, 46.475, 46.61, 46.439,
46.595, 46.595, 46.595, 46.653, 46.835, 46.285, 46.772, 46.861,
46.861, 46.861, 47.02, 47.225, 47.3, 47.525, 47.076, 47.076,
47.076, 47.62, 47.613, 47.575, 47.585, 47.552, 47.552, 47.552,
47.51, 47.45, 47.403, 47.435, 47.45, 47.45, 47.45, 47.375,
47.445, 47, 47.665, 47.665, 47.665, 47.665, 47.719, 47.825,
47.67, 47.623, 47.615, 47.615, 47.615, 47.717, 47.809, 47.869,
47.72, 47.8, 47.8, 47.8, 47.695, 47.67, 47.586, 47.635, 47.63,
47.63, 47.63, 47.55, 47.335, 47.2, 47.233, 46.92, 46.92,
46.92, 46.98, 46.82, 46.875, 47, 47.17, 47.17, 47.17), PHP.CLOSE = c(46.46,
46.36, 46.36, 46.36, 46.36, 46.345, 46.535, 46.45, 46.58,
46.45, 46.45, 46.45, 46.28, 46.41, 46.88, 46.455, 46.6, 46.6,
46.6, 46.79, 46.75, 46.85, 46.835, 46.9, 46.9, 46.9, 47.02,
47.035, 46.961, 46.94, 47.11, 47.11, 47.11, 47.07, 47.18,
47.14, 47.15, 47.12, 47.12, 47.12, 47.077, 46.725, 46.94,
46.714, 46.85, 46.85, 46.85, 47.05, 47.21, 47.321, 47.31,
47.125, 47.125, 47.125, 47, 47.03, 47.03, 46.775, 46.915,
46.915, 46.915, 47.085, 46.965, 46.895, 47.03, 46.95, 46.95,
46.95, 46.51, 46.475, 46.38, 46.335, 46.425, 46.425, 46.425,
46.43, 46.43, 46.31, 46.08, 46.13, 46.13, 46.13, 46.055,
46.01, 46.11, 46.225, 46.465, 46.465, 46.465, 46.53, 46.64,
46.75, 46.75, 46.635, 46.635, 46.635, 46.69, 46.785, 46.92,
46.788, 46.75, 46.75, 46.75, 46.8, 46.66, 46.42, 46.46, 46.555,
46.555, 46.555, 46.647, 46.555, 46.757, 47.09, 47.09, 47.09,
47.09, 47.24, 47.08, 46.89, 46.965, 46.89, 46.89, 46.89,
46.77, 46.78, 46.76, 46.85, 46.645, 46.645, 46.645, 46.44,
46.225, 46.093, 46.185, 46.065, 46.065, 46.065, 46.25, 46.085,
46.018, 46.122, 46.135, 46.135, 46.135, 46.1, 46.2, 46.26,
46.08, 46.015, 46.015, 46.015, 46.07, 46.028, 46.35, 46.34,
46.395, 46.395, 46.395, 46.395, 46.395, 46.285, 46.33, 46.36,
46.36, 46.36, 46.38, 46.785, 46.83, 46.595, 46.62, 46.62,
46.62, 46.695, 46.855, 46.958, 46.92, 46.946, 46.946, 46.946,
47.125, 47.298, 47.35, 47.558, 47.515, 47.515, 47.515, 47.62,
47.625, 47.635, 47.619, 47.665, 47.665, 47.665, 47.55, 47.45,
47.573, 47.45, 47.74, 47.74, 47.74, 47.45, 47.47, 47.671,
47.665, 47.665, 47.665, 47.665, 47.775, 47.86, 47.685, 47.69,
47.65, 47.65, 47.65, 47.743, 47.815, 47.997, 47.89, 47.805,
47.805, 47.805, 47.935, 47.89, 47.67, 47.706, 47.745, 47.745,
47.745, 47.64, 47.542, 47.45, 47.269, 47.158, 47.158, 47.158,
47.01, 47.025, 46.89, 47.125, 47.17, 47.17, 47.17), PHP.LAST = c(46.46,
46.36, 46.36, 46.36, 46.36, 46.345, 46.535, 46.45, 46.58,
46.45, 46.45, 46.45, 46.28, 46.41, 46.88, 46.455, 46.6, 46.6,
46.6, 46.79, 46.75, 46.85, 46.835, 46.9, 46.9, 46.9, 47.02,
47.035, 46.961, 46.94, 47.11, 47.11, 47.11, 47.07, 47.18,
47.14, 47.15, 47.12, 47.12, 47.12, 47.077, 46.725, 46.94,
46.714, 46.85, 46.85, 46.85, 47.05, 47.21, 47.321, 47.31,
47.125, 47.125, 47.125, 47, 47.03, 47.03, 46.775, 46.915,
46.915, 46.915, 47.085, 46.965, 46.895, 47.03, 46.95, 46.95,
46.95, 46.51, 46.475, 46.38, 46.335, 46.425, 46.425, 46.425,
46.43, 46.43, 46.31, 46.08, 46.13, 46.13, 46.13, 46.055,
46.01, 46.11, 46.225, 46.465, 46.465, 46.465, 46.53, 46.64,
46.75, 46.75, 46.635, 46.635, 46.635, 46.69, 46.785, 46.92,
46.788, 46.75, 46.75, 46.75, 46.8, 46.66, 46.42, 46.46, 46.555,
46.555, 46.555, 46.647, 46.555, 46.757, 47.09, 47.09, 47.09,
47.09, 47.24, 47.08, 46.89, 46.965, 46.89, 46.89, 46.89,
46.77, 46.78, 46.76, 46.85, 46.645, 46.645, 46.645, 46.44,
46.225, 46.093, 46.185, 46.065, 46.065, 46.065, 46.25, 46.085,
46.018, 46.122, 46.135, 46.135, 46.135, 46.1, 46.2, 46.26,
46.08, 46.015, 46.015, 46.015, 46.07, 46.028, 46.35, 46.34,
46.395, 46.395, 46.395, 46.395, 46.395, 46.285, 46.33, 46.36,
46.36, 46.36, 46.38, 46.785, 46.83, 46.595, 46.62, 46.62,
46.62, 46.695, 46.855, 46.958, 46.92, 46.946, 46.946, 46.946,
47.125, 47.298, 47.35, 47.558, 47.515, 47.515, 47.515, 47.62,
47.625, 47.635, 47.619, 47.665, 47.665, 47.665, 47.55, 47.45,
47.573, 47.45, 47.74, 47.74, 47.74, 47.45, 47.47, 47.671,
47.665, 47.665, 47.665, 47.665, 47.775, 47.86, 47.685, 47.69,
47.65, 47.65, 47.65, 47.743, 47.815, 47.997, 47.89, 47.805,
47.805, 47.805, 47.935, 47.89, 47.67, 47.706, 47.745, 47.745,
47.745, 47.64, 47.542, 47.45, 47.269, 47.158, 47.158, 47.158,
47.01, 47.025, 46.89, 47.125, 47.17, 47.17, 47.17)), .Names = c("Date",
"PHP.OPEN", "PHP.HIGH", "PHP.LOW", "PHP.CLOSE", "PHP.LAST"
), row.names = c(NA, -243L), class = "data.frame"), structure(list(
Date = structure(c(1472533200, 1472446800, 1472360400,
1472274000, 1472187600, 1472101200, 1472014800, 1471928400,
1471842000, 1471755600, 1471669200, 1471582800, 1471496400,
1471410000, 1471323600, 1471237200, 1471150800, 1471064400,
1470978000, 1470891600, 1470805200, 1470718800, 1470632400,
1470546000, 1470459600, 1470373200, 1470286800, 1470200400,
1470114000, 1470027600, 1469941200, 1469854800, 1469768400,
1469682000, 1469595600, 1469509200, 1469422800, 1469336400,
1469250000, 1469163600, 1469077200, 1468990800, 1468904400,
1468818000, 1468731600, 1468645200, 1468558800, 1468472400,
1468386000, 1468299600, 1468213200, 1468126800, 1468040400,
1467954000, 1467867600, 1467781200, 1467694800, 1467608400,
1467522000, 1467435600, 1467349200, 1467262800, 1467176400,
1467090000, 1467003600, 1466917200, 1466830800, 1466744400,
1466658000, 1466571600, 1466485200, 1466398800, 1466312400,
1466226000, 1466139600, 1466053200, 1465966800, 1465880400,
1465794000, 1465707600, 1465621200, 1465534800, 1465448400,
1465362000, 1465275600, 1465189200, 1465102800, 1465016400,
1464930000, 1464843600, 1464757200, 1464670800, 1464584400,
1464498000, 1464411600, 1464325200, 1464238800, 1464152400,
1464066000, 1463979600, 1463893200, 1463806800, 1463720400,
1463634000, 1463547600, 1463461200, 1463374800, 1463288400,
1463202000, 1463115600, 1463029200, 1462942800, 1462856400,
1462770000, 1462683600, 1462597200, 1462510800, 1462424400,
1462338000, 1462251600, 1462165200, 1462078800, 1461992400,
1461906000, 1461819600, 1461733200, 1461646800, 1461560400,
1461474000, 1461387600, 1461301200, 1461214800, 1461128400,
1461042000, 1460955600, 1460869200, 1460782800, 1460696400,
1460610000, 1460523600, 1460437200, 1460350800, 1460264400,
1460178000, 1460091600, 1460005200, 1459918800, 1459832400,
1459746000, 1459659600, 1459573200, 1459486800, 1459400400,
1459314000, 1459227600, 1459141200, 1459054800, 1458968400,
1458882000, 1458795600, 1458709200, 1458622800, 1458536400,
1458450000, 1458363600, 1458277200, 1458190800, 1458104400,
1458018000, 1457931600, 1457848800, 1457762400, 1457676000,
1457589600, 1457503200, 1457416800, 1457330400, 1457244000,
1457157600, 1457071200, 1456984800, 1456898400, 1456812000,
1456725600, 1456639200, 1456552800, 1456466400, 1456380000,
1456293600, 1456207200, 1456120800, 1456034400, 1455948000,
1455861600, 1455775200, 1455688800, 1455602400, 1455516000,
1455429600, 1455343200, 1455256800, 1455170400, 1455084000,
1454997600, 1454911200, 1454824800, 1454738400, 1454652000,
1454565600, 1454479200, 1454392800, 1454306400, 1454220000,
1454133600, 1454047200, 1453960800, 1453874400, 1453788000,
1453701600, 1453615200, 1453528800, 1453442400, 1453356000,
1453269600, 1453183200, 1453096800, 1453010400, 1452924000,
1452837600, 1452751200, 1452664800, 1452578400, 1452492000,
1452405600, 1452319200, 1452232800, 1452146400, 1452060000,
1451973600, 1451887200, 1451800800, 1451714400, 1451628000
), tzone = "", class = c("POSIXct", "POSIXt")), THB.OPEN = c(34.53,
34.596, 34.506, 34.506, 34.506, 34.539, 34.573, 34.564,
34.607, 34.528, 34.528, 34.528, 34.531, 34.577, 34.52,
34.577, 34.696, 34.696, 34.696, 34.731, 34.738, 34.911,
34.901, 34.796, 34.796, 34.796, 34.886, 34.739, 34.74,
34.72, 34.8, 34.8, 34.8, 34.84, 34.951, 34.98, 34.905,
34.87, 34.87, 34.87, 34.95, 34.97, 34.931, 34.918, 34.907,
34.907, 34.907, 35.029, 35.13, 35.103, 35.049, 35.169,
35.169, 35.169, 35.145, 35.149, 35.012, 35.011, 35.06,
35.06, 35.06, 35.097, 35.175, 35.238, 35.257, 35.114,
35.114, 35.114, 35.146, 35.173, 35.15, 35.162, 35.225,
35.225, 35.225, 35.151, 35.24, 35.12, 35.16, 35.147,
35.147, 35.147, 35.085, 35.189, 35.217, 35.26, 35.545,
35.545, 35.545, 35.57, 35.64, 35.691, 35.69, 35.56, 35.56,
35.56, 35.571, 35.625, 35.664, 35.56, 35.622, 35.622,
35.622, 35.641, 35.486, 35.32, 35.341, 35.311, 35.311,
35.311, 35.217, 35.19, 35.193, 35.09, 35.126, 35.126,
35.126, 35.075, 34.99, 34.83, 34.83, 34.885, 34.885,
34.885, 35.007, 35.09, 35.08, 35.052, 35.02, 35.02, 35.02,
34.883, 34.825, 34.88, 35.01, 35.051, 35.051, 35.051,
35.024, 34.951, 35.005, 35.04, 35.09, 35.09, 35.09, 35.15,
35.214, 35.237, 35.12, 35.09, 35.09, 35.09, 35.159, 35.189,
35.323, 35.274, 35.265, 35.265, 35.265, 35.188, 34.917,
34.88, 34.85, 34.745, 34.745, 34.745, 34.77, 34.99, 35.07,
35.05, 35.064, 35.064, 35.064, 35.239, 35.287, 35.365,
35.349, 35.385, 35.385, 35.385, 35.476, 35.54, 35.588,
35.618, 35.63, 35.63, 35.63, 35.65, 35.69, 35.715, 35.717,
35.54, 35.54, 35.54, 35.537, 35.6, 35.59, 35.552, 35.228,
35.228, 35.228, 35.228, 35.3, 35.388, 35.495, 35.48,
35.48, 35.48, 35.55, 35.77, 35.579, 35.591, 35.684, 35.684,
35.684, 35.775, 35.77, 35.89, 35.925, 36.026, 36.026,
36.026, 36.235, 36.272, 36.26, 36.29, 36.28, 36.28, 36.28,
36.256, 36.237, 36.235, 36.25, 36.17, 36.17, 36.17, 36.226,
36.103, 36.08, 36.033, 36.02, 36.02, 36.02), THB.HIGH = c(34.655,
34.72, 34.601, 34.601, 34.601, 34.675, 34.69, 34.676,
34.764, 34.671, 34.671, 34.671, 34.69, 34.737, 34.65,
34.82, 34.86, 34.86, 34.86, 34.838, 34.967, 35.005, 35.065,
34.93, 34.93, 34.93, 35.039, 34.95, 34.84, 34.91, 34.92,
34.92, 34.92, 34.967, 35.074, 35.086, 35.08, 35, 35,
35, 35.088, 35.09, 35.04, 35.03, 35.085, 35.085, 35.085,
35.23, 35.257, 35.206, 35.225, 35.264, 35.264, 35.264,
35.239, 35.281, 35.198, 35.125, 35.16, 35.16, 35.16,
35.228, 35.295, 35.371, 35.435, 35.546, 35.546, 35.546,
35.244, 35.29, 35.24, 35.284, 35.356, 35.356, 35.356,
35.254, 35.39, 35.303, 35.295, 35.295, 35.295, 35.295,
35.24, 35.241, 35.327, 35.411, 35.64, 35.64, 35.64, 35.704,
35.77, 35.755, 35.8, 35.701, 35.701, 35.701, 35.68, 35.795,
35.787, 35.706, 35.736, 35.736, 35.736, 35.8, 35.625,
35.557, 35.461, 35.466, 35.466, 35.466, 35.34, 35.294,
35.267, 35.166, 35.193, 35.193, 35.193, 35.19, 35.184,
34.94, 34.934, 35.009, 35.009, 35.009, 35.16, 35.195,
35.222, 35.17, 35.095, 35.095, 35.095, 35.095, 34.949,
35.02, 35.11, 35.12, 35.12, 35.12, 35.211, 35.055, 35.07,
35.112, 35.234, 35.234, 35.234, 35.253, 35.31, 35.39,
35.29, 35.175, 35.175, 35.175, 35.262, 35.365, 35.44,
35.408, 35.365, 35.365, 35.365, 35.395, 35.13, 34.963,
34.952, 34.925, 34.925, 34.925, 34.975, 35.145, 35.15,
35.151, 35.26, 35.26, 35.26, 35.31, 35.393, 35.47, 35.495,
35.46, 35.46, 35.46, 35.559, 35.656, 35.655, 35.763,
35.707, 35.707, 35.707, 35.714, 35.759, 35.776, 35.781,
35.75, 35.75, 35.75, 35.63, 35.68, 35.671, 35.69, 35.64,
35.64, 35.64, 35.325, 35.428, 35.539, 35.612, 35.651,
35.651, 35.651, 35.755, 35.87, 35.771, 35.77, 35.861,
35.861, 35.861, 35.885, 35.874, 36.045, 36.055, 36.253,
36.253, 36.253, 36.29, 36.327, 36.325, 36.382, 36.374,
36.374, 36.374, 36.345, 36.338, 36.375, 36.345, 36.327,
36.327, 36.327, 36.35, 36.257, 36.177, 36.19, 36.033,
36.033, 36.033), THB.LOW = c(34.53, 34.596, 34.506, 34.506,
34.506, 34.539, 34.573, 34.564, 34.607, 34.528, 34.528,
34.528, 34.531, 34.577, 34.52, 34.577, 34.696, 34.696,
34.696, 34.731, 34.738, 34.911, 34.901, 34.796, 34.796,
34.796, 34.886, 34.739, 34.74, 34.72, 34.8, 34.8, 34.8,
34.84, 34.951, 34.98, 34.905, 34.87, 34.87, 34.87, 34.95,
34.97, 34.931, 34.918, 34.907, 34.907, 34.907, 35.029,
35.13, 35.103, 35.049, 35.169, 35.169, 35.169, 35.145,
35.149, 35.012, 35.011, 35.06, 35.06, 35.06, 35.097,
35.175, 35.238, 35.257, 35.114, 35.114, 35.114, 35.146,
35.173, 35.15, 35.162, 35.225, 35.225, 35.225, 35.151,
35.24, 35.12, 35.16, 35.147, 35.147, 35.147, 35.085,
35.189, 35.217, 35.26, 35.545, 35.545, 35.545, 35.57,
35.64, 35.691, 35.69, 35.56, 35.56, 35.56, 35.571, 35.625,
35.664, 35.56, 35.622, 35.622, 35.622, 35.641, 35.486,
35.32, 35.341, 35.311, 35.311, 35.311, 35.217, 35.19,
35.193, 35.09, 35.126, 35.126, 35.126, 35.075, 34.99,
34.83, 34.83, 34.885, 34.885, 34.885, 35.007, 35.09,
35.08, 35.052, 35.02, 35.02, 35.02, 34.883, 34.825, 34.88,
35.01, 35.051, 35.051, 35.051, 35.024, 34.951, 35.005,
35.04, 35.09, 35.09, 35.09, 35.15, 35.214, 35.237, 35.12,
35.09, 35.09, 35.09, 35.159, 35.189, 35.323, 35.274,
35.265, 35.265, 35.265, 35.188, 34.917, 34.88, 34.85,
34.745, 34.745, 34.745, 34.77, 34.99, 35.07, 35.05, 35.064,
35.064, 35.064, 35.239, 35.287, 35.365, 35.349, 35.385,
35.385, 35.385, 35.476, 35.54, 35.588, 35.618, 35.63,
35.63, 35.63, 35.65, 35.69, 35.715, 35.717, 35.54, 35.54,
35.54, 35.537, 35.6, 35.59, 35.552, 35.228, 35.228, 35.228,
35.228, 35.3, 35.388, 35.495, 35.48, 35.48, 35.48, 35.55,
35.77, 35.579, 35.591, 35.684, 35.684, 35.684, 35.775,
35.77, 35.89, 35.925, 36.026, 36.026, 36.026, 36.235,
36.272, 36.26, 36.29, 36.28, 36.28, 36.28, 36.256, 36.237,
36.235, 36.25, 36.17, 36.17, 36.17, 36.226, 36.103, 36.08,
36.033, 36.02, 36.02, 36.02), THB.CLOSE = c(34.558, 34.601,
34.565, 34.565, 34.565, 34.565, 34.618, 34.64, 34.67,
34.635, 34.635, 34.635, 34.605, 34.7, 34.575, 34.61,
34.81, 34.81, 34.81, 34.76, 34.751, 34.965, 34.974, 34.822,
34.822, 34.822, 34.927, 34.94, 34.75, 34.77, 34.83, 34.83,
34.83, 34.868, 34.97, 35.01, 35.05, 34.93, 34.93, 34.93,
34.995, 34.989, 35.01, 35.005, 34.94, 34.94, 34.94, 35.03,
35.16, 35.138, 35.11, 35.25, 35.25, 35.25, 35.173, 35.214,
35.134, 35.048, 35.086, 35.086, 35.086, 35.138, 35.23,
35.29, 35.35, 35.339, 35.339, 35.339, 35.173, 35.24,
35.173, 35.21, 35.235, 35.235, 35.235, 35.24, 35.25,
35.3, 35.18, 35.26, 35.26, 35.26, 35.21, 35.21, 35.23,
35.28, 35.629, 35.629, 35.629, 35.61, 35.67, 35.705,
35.75, 35.658, 35.658, 35.658, 35.6, 35.71, 35.73, 35.66,
35.679, 35.679, 35.679, 35.71, 35.6, 35.49, 35.37, 35.43,
35.43, 35.43, 35.32, 35.27, 35.236, 35.13, 35.149, 35.149,
35.149, 35.179, 35.184, 34.92, 34.841, 34.92, 34.92,
34.92, 35.02, 35.15, 35.16, 35.11, 35.04, 35.04, 35.04,
35.01, 34.86, 34.91, 35.03, 35.065, 35.065, 35.065, 35.12,
35.036, 35.02, 35.07, 35.12, 35.12, 35.12, 35.205, 35.256,
35.32, 35.263, 35.105, 35.105, 35.105, 35.185, 35.235,
35.426, 35.36, 35.27, 35.27, 35.27, 35.35, 35.118, 34.91,
34.89, 34.85, 34.85, 34.85, 34.78, 35.02, 35.132, 35.08,
35.16, 35.16, 35.16, 35.25, 35.32, 35.425, 35.42, 35.403,
35.403, 35.403, 35.51, 35.57, 35.625, 35.64, 35.64, 35.64,
35.64, 35.68, 35.7, 35.74, 35.755, 35.745, 35.745, 35.745,
35.548, 35.61, 35.61, 35.65, 35.58, 35.58, 35.58, 35.245,
35.36, 35.489, 35.51, 35.497, 35.497, 35.497, 35.56,
35.841, 35.76, 35.605, 35.73, 35.73, 35.73, 35.825, 35.79,
35.908, 36.021, 36.037, 36.037, 36.037, 36.263, 36.3,
36.27, 36.32, 36.366, 36.366, 36.366, 36.313, 36.25,
36.33, 36.28, 36.307, 36.307, 36.307, 36.285, 36.22,
36.15, 36.14, 36.02, 36.02, 36.02), THB.LAST = c(34.558,
34.601, 34.565, 34.565, 34.565, 34.565, 34.618, 34.64,
34.67, 34.635, 34.635, 34.635, 34.605, 34.7, 34.575,
34.61, 34.81, 34.81, 34.81, 34.76, 34.751, 34.965, 34.974,
34.822, 34.822, 34.822, 34.927, 34.94, 34.75, 34.77,
34.83, 34.83, 34.83, 34.868, 34.97, 35.01, 35.05, 34.93,
34.93, 34.93, 34.995, 34.989, 35.01, 35.005, 34.94, 34.94,
34.94, 35.03, 35.16, 35.138, 35.11, 35.25, 35.25, 35.25,
35.173, 35.214, 35.134, 35.048, 35.086, 35.086, 35.086,
35.138, 35.23, 35.29, 35.35, 35.339, 35.339, 35.339,
35.173, 35.24, 35.173, 35.21, 35.235, 35.235, 35.235,
35.24, 35.25, 35.3, 35.18, 35.26, 35.26, 35.26, 35.21,
35.21, 35.23, 35.28, 35.629, 35.629, 35.629, 35.61, 35.67,
35.705, 35.75, 35.658, 35.658, 35.658, 35.6, 35.71, 35.73,
35.66, 35.679, 35.679, 35.679, 35.71, 35.6, 35.49, 35.37,
35.43, 35.43, 35.43, 35.32, 35.27, 35.236, 35.13, 35.149,
35.149, 35.149, 35.179, 35.184, 34.92, 34.841, 34.92,
34.92, 34.92, 35.02, 35.15, 35.16, 35.11, 35.04, 35.04,
35.04, 35.01, 34.86, 34.91, 35.03, 35.065, 35.065, 35.065,
35.12, 35.036, 35.02, 35.07, 35.12, 35.12, 35.12, 35.205,
35.256, 35.32, 35.263, 35.105, 35.105, 35.105, 35.185,
35.235, 35.426, 35.36, 35.27, 35.27, 35.27, 35.35, 35.118,
34.91, 34.89, 34.85, 34.85, 34.85, 34.78, 35.02, 35.132,
35.08, 35.16, 35.16, 35.16, 35.25, 35.32, 35.425, 35.42,
35.403, 35.403, 35.403, 35.51, 35.57, 35.625, 35.64,
35.64, 35.64, 35.64, 35.68, 35.7, 35.74, 35.755, 35.745,
35.745, 35.745, 35.548, 35.61, 35.61, 35.65, 35.58, 35.58,
35.58, 35.245, 35.36, 35.489, 35.51, 35.497, 35.497,
35.497, 35.56, 35.841, 35.76, 35.605, 35.73, 35.73, 35.73,
35.825, 35.79, 35.908, 36.021, 36.037, 36.037, 36.037,
36.263, 36.3, 36.27, 36.32, 36.366, 36.366, 36.366, 36.313,
36.25, 36.33, 36.28, 36.307, 36.307, 36.307, 36.285,
36.22, 36.15, 36.14, 36.02, 36.02, 36.02)), .Names = c("Date",
"THB.OPEN", "THB.HIGH", "THB.LOW", "THB.CLOSE", "THB.LAST"
), row.names = c(NA, -243L), class = "data.frame"))

Resources