Counting the Occurence of Hexadecimal Numbers - R - r

So I have a file which contains a large number of hexidecimal digits in pairs, and a 'NA'/missing data symbol of "??".
A4 BB 08 6F E7 88 D9 10 11 12 AC CB C8 CC #Row of data in the file.
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? #Row of missing data in the file.
I'm attempting to pipe all of that in and get some insight into the frequency of each hexadecimal number from 0 to 256. So far I read it into a structure using the 'read table' command (call it test), and I'm really not sure exactly what to do from there. I've done a number of different things trying to suppress the lines with "??" in any column and then convert the rest to hex values and get something useful from this. If anyone can point me towards the tools I need to complete this task I'd much appreciate it.
Edit:
As per request the output of dput.
structure(list(V2 = structure(c(88L, 209L, 124L, 91L, 132L, 235L
), .Label = c("??", "00", "01", "02", "03", "04", "05", "06",
"07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10", "11",
"12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C",
"1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26", "27",
"28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "30", "31", "32",
"33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D",
"3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47", "48",
"49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52", "53",
"54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E",
"5F", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
"6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73", "74",
"75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F",
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A",
"8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94", "95",
"96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "A0",
"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB",
"AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5", "B6",
"B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0", "C1",
"C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC",
"CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7",
"D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1", "E2",
"E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED",
"EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8",
"F9", "FA", "FB", "FC", "FD", "FE", "FF"), class = "factor"),
There are a number of other columns as well. I left them off as they have the same ~257 values for labels give or take a hex value here or there.
as.hexmode(names(test)) resulted in the same issue, couldn't coerce 'x' to hexmode.
Edit: Okay I had some success and I got it to do what I wanted it to do more or less.
First I wanted to merge the columns as I just wanted an overall count of the occurrences (this may even have been unnecessary)
test2 <-
c(as.character(test[,1]),as.character(test[,2]),as.character(test[,3]),as.character(test[,4]),
as.character(test[,5]), as.character(test[,6]), as.character(test[,7]),
as.character(test[,8]), as.character(test[,9]), as.character(test[,10]),
as.character(test[,11]), as.character(test[,12]), as.character(test[,13]),
as.character(test[,14]), as.character(test[,15]), as.character(test[,16]))
Then I just wanted the counts of each value:
table(test2)
No conversion to integers or any such shenanigans necessary. I feel more than a little dumb, but oh well. I am still curious though if there's a better way to get the overall count across all rows and columns of each value as the way I did it seems clunky.
Edit:
The ultimate answer was (going with my original naming convention):
table(unlist(lapply(test, as.character)))
Thank you BondedDust.

See if you get some success with:
as.hexmode ( names(test) )
The output you offer suggests a table-object has been created and teh first row would be the names (in character mode) of the entries seen below those hex-characters. It remains unclear whether you are showing the the content of an external text file or output on the console so this may be a WAG.
> res <- scan(what="")
1: A4 BB 08 6F E7 88 D9 10 11 12 AC CB C8 CC
15:
Read 14 items
> as.hexmode(res)
[1] "a4" "bb" "08" "6f" "e7" "88" "d9" "10" "11" "12" "ac" "cb" "c8" "cc"
> dput( as.hexmode(res) )
structure(c(164L, 187L, 8L, 111L, 231L, 136L, 217L, 16L, 17L,
18L, 172L, 203L, 200L, 204L), class = "hexmode")

Related

Group periodic data in dataframe

I have a dataset comprised of periodic data. I want to group the data by period.
The full dataset is provided: LINK
Data for one period of the dataset is provided and ploted:
> dput(DATA[1:122,c(2,9)])
structure(list(Actuator.Force = c(-4853.5854, -4566.9771, -4198.7612,
-3774.5527, -3317.6958, -2847.5229, -2364.7585, -1880.9485, -1405.4272,
-930.289, -467.04822, -18.867363, 421.17499, 838.86719, 1239.9121,
1626.0669, 1990.6389, 2334.0852, 2655.344, 2962.0227, 3243.7817,
3506.2249, 3744.2622, 3959.8271, 4156.7061, 4324.9048, 4469.229,
4591.6689, 4687.4194, 4764.0801, 4814.6167, 4840.313, 4846.0181,
4826.3135, 4777.6553, 4696.0791, 4583.854, 4442.457, 4272.5254,
4076.7224, 3851.1211, 3603.1853, 3330.7456, 3038.3157, 2724.115,
2386.5476, 2032.5809, 1660.0547, 1268.0084, 859.16675, 432.4075,
-14.131592, -479.29309, -955.67108, -1444.614, -1937.2562, -2437.0085,
-2941.8914, -3450.9009, -3959.9597, -4468.9795, -4981.2549, -5492.6997,
-6002.334, -6510.5425, -7016.2432, -7517.8286, -8013.1348, -8500.4199,
-8974.8867, -9439.5479, -9890.5938, -10326.367, -10744.421, -11147.754,
-11534.83, -11902.651, -12248.997, -12577.919, -12885.458, -13172.309,
-13441.554, -13691.502, -13922.634, -14127.116, -14305.272, -14458.267,
-14582.934, -14685.274, -14758.539, -14806.058, -14830.719, -14836.625,
-14822.204, -14773.916, -14700.484, -14597.968, -14469.834, -14312.099,
-14126.422, -13915.136, -13676.505, -13412.388, -13120.703, -12807.961,
-12473.883, -12115.751, -11740.082, -11342.633, -10929.945, -10502.158,
-10062.869, -9611.8271, -9146.6006, -8673.3545, -8191.7417, -7700.769,
-7200.9346, -6695.8809, -6185.2378, -5670.8711, -5154.9995),
Rotation = c(-0.005985651, -0.00565783616666667, -0.00522075016666667,
-0.0046743925, -0.00406732866666667, -0.00343598223333333,
-0.00286534205, -0.00219757165, -0.00156622503333333, -0.000934878566666667,
-0.000267108158333333, 0.000303531998333333, 0.00084988955,
0.0013962471, 0.00193046351666667, 0.00242825596666667, 0.00288962463333333,
0.0033995583, 0.0038366445, 0.00424944783333333, 0.004637969,
0.0050507725, 0.005378587, 0.00565783616666667, 0.00594922716666667,
0.00620419383333333, 0.006410596, 0.0065684325, 0.00670198666666667,
0.00683554116666667, 0.0069205295, 0.00699337683333333, 0.0070055185,
0.006993377, 0.00696909483333333, 0.00688410516666667, 0.006774834,
0.00659271483333333, 0.006386313, 0.00613134633333333, 0.0058399555,
0.0055364235, 0.00518432633333333, 0.00483222916666667, 0.0044072845,
0.00403090483333333, 0.00353311216666667, 0.0029988961, 0.00251324506666667,
0.0020275938, 0.00144481233333333, 0.00086203085, 0.000303531998333333,
-0.000315673273333333, -0.000983443666666667, -0.00162693151666667,
-0.00233112578333333, -0.0029988961, -0.00366666666666667,
-0.00433443683333333, -0.00496578316666667, -0.00563355366666667,
-0.0062770415, -0.0069690945, -0.0076611475, -0.00836534183333333,
-0.00902097083333333, -0.00968874116666667, -0.0103443703333333,
-0.0109514346666667, -0.011594922, -0.012177704, -0.0127969093333333,
-0.0133918318333333, -0.0139746131666667, -0.0145209698333333,
-0.014982339, -0.0154437081666667, -0.0159050765, -0.0163178798333333,
-0.0167185421666667, -0.0170706398333333, -0.0174105943333333,
-0.0177505506666667, -0.018017659, -0.0182483433333333, -0.0184547455,
-0.0186490056666667, -0.0187704183333333, -0.01887969, -0.0189525386666667,
-0.018988962, -0.0190011033333333, -0.018988962, -0.0189768206666667,
-0.0189282553333333, -0.0188189838333333, -0.018673289, -0.018442604,
-0.0182240605, -0.017993377, -0.0176534206666667, -0.0173256068333333,
-0.0169492263333333, -0.0165485635, -0.0161357608333333,
-0.0156622516666667, -0.0152373058333333, -0.0147152313333333,
-0.0141931568333333, -0.0136103748333333, -0.0130275935,
-0.0123962468333333, -0.0118013235, -0.0112064015, -0.0105507718333333,
-0.00993156683333333, -0.0092637965, -0.008620309, -0.00791611466666667,
-0.00719977883333333, -0.0065441495)), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
"25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35",
"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46",
"47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57",
"58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68",
"69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90",
"91", "92", "93", "94", "95", "96", "97", "98", "99", "100",
"101", "102", "103", "104", "105", "106", "107", "108", "109",
"110", "111", "112", "113", "114", "115", "116", "117", "118",
"119", "120", "121", "122"), class = "data.frame")
The next row of the data starts a new period and so on. I want to group the rows by the periods that exist in the data.
Although the code provided in this example can find the periods if fully completed data is provided (it worked for the first three periods), when applied to the entire dataset of periodic data, it resulted in NaNs.
ssp <- spectrum(DATA$Rotation, plot = FALSE, method = "ar", n.freq = 1e6)
period <- 1 / with(ssp, freq[spec == max(spec)])
DATA$Loop <- (seq_len(nrow(DATA)) %/% period) + 1
Here's an approach where I define a region where both the Rotation is increasing and Rotation is at least as high as the starting value. Then I count how many times we enter that region and that's the period number.
library(dplyr)
Rot_start = DATA$Rotation[1]
rbind(DATA, DATA) %>% # to demonstrate two cycles
mutate(Rot_pos = Rotation > lag(Rotation, default = -1),
Rot_rightside = Rotation >= Rot_start,
Rot_region = Rot_pos & Rot_rightside,
new_period = Rot_region & !(lag(Rot_region, default = FALSE)),
period = cumsum(new_period))
# more succinct, same workings
# mutate(Rot_region = Rotation > lag(Rotation, default = -1) & Rotation >= Rot_start,
# period = cumsum(Rot_region & !(lag(Rot_region, default = FALSE))))

scale_x_continuous : Discrete value supplied to continuous scale

I'm a beginner in R. I get this error
Error: Discrete value supplied to continuous scale
when I try to use
scale_x_continuous(breaks=1:10)
The plot I get is the following one. As you can see, the axis needs to be reduced...
I get my data from a csv file
dput(head(Data, 20))
structure(list(Pmanche = structure(1:20, .Label = c("0", "0,1",
"0,2", "0,3", "0,4", "0,5", "0,6", "0,7", "0,8", "0,9", "1",
"1,1", "1,2", "1,3", "1,4", "1,5", "1,6", "1,7", "1,8", "1,9",
"10", "10,1", "10,2", "10,3", "10,4", "10,5", "10,6", "10,7",
"10,8", "10,9", "100", "11", "11,1", "11,2", "11,3", "11,4",
"11,5", "11,6", "11,7", "11,8", "11,9", "12", "12,1", "12,2",
"12,3", "12,4", "12,5", "12,6", "12,7", "12,8", "12,9", "13",
"13,1", "13,2", "13,3", "13,4", "13,5", "13,6", "13,7", "13,8",
"13,9", "14", "14,1", "14,2", "14,3", "14,4", "14,5", "14,6",
"14,7", "14,8", "14,9", "15", "15,1", "15,2", "15,3", "15,4",
"15,5", "15,6", "15,7", "15,8", "15,9", "16", "16,1", "16,2",
"16,3", "16,4", "16,5", "16,6", "16,7", "16,8", "16,9", "17",
"17,1", "17,2", "17,3", "17,4", "17,5", "17,6", "17,7", "17,8",
"17,9", "18", "18,1", "18,2", "18,3", "18,4", "18,5", "18,6",
"18,7", "18,8", "18,9", "19", "19,1", "19,2", "19,3", "19,4",
"19,5", "19,6", "19,7", "19,8", "19,9", "2", "2,1", "2,2", "2,3",
"2,4", "2,5", "2,6", "2,7", "2,8", "2,9", "20", "20,1", "20,2",
"20,3", "20,4", "20,5", "20,6", "20,7", "20,8", "20,9", "21",
"21,1", "21,2", "21,3", "21,4", "21,5", "21,6", "21,7", "21,8",
"21,9", "22", "22,1", "22,2", "22,3", "22,4", "22,5", "22,6",
"22,7", "22,8", "22,9", "23", "23,1", "23,2", "23,3", "23,4",
"23,5", "23,6", "23,7", "23,8", "23,9", "24", "24,1", "24,2",
"24,3", "24,4", "24,5", "24,6", "24,7", "24,8", "24,9", "25",
"25,1", "25,2", "25,3", "25,4", "25,5", "25,6", "25,7", "25,8",
"25,9", "26", "26,1", "26,2", "26,3", "26,4", "26,5", "26,6",
"26,7", "26,8", "26,9", "27", "27,1", "27,2", "27,3", "27,4",
"27,5", "27,6", "27,7", "27,8", "27,9", "28", "28,1", "28,2",
"28,3", "28,4", "28,5", "28,6", "28,7", "28,8", "28,9", "29",
"29,1", "29,2", "29,3", "29,4", "29,5", "29,6", "29,7", "29,8",
"29,9", "3", "3,1", "3,2", "3,3", "3,4", "3,5", "3,6", "3,7",
"3,8", "3,9", "30", "30,1", "30,2", "30,3", "30,4", "30,5", "30,6",
"30,7", "30,8", "30,9", "31", "31,1", "31,2", "31,3", "31,4",
"31,5", "31,6", "31,7", "31,8", "31,9", "32", "32,1", "32,2",
"32,3", "32,4", "32,5", "32,6", "32,7", "32,8", "32,9", "33",
"33,1", "33,2", "33,3", "33,4", "33,5", "33,6", "33,7", "33,8",
"33,9", "34", "34,1", "34,2", "34,3", "34,4", "34,5", "34,6",
"34,7", "34,8", "34,9", "35", "35,1", "35,2", "35,3", "35,4",
"35,5", "35,6", "35,7", "35,8", "35,9", "36", "36,1", "36,2",
"36,3", "36,4", "36,5", "36,6", "36,7", "36,8", "36,9", "37",
"37,1", "37,2", "37,3", "37,4", "37,5", "37,6", "37,7", "37,8",
"37,9", "38", "38,1", "38,2", "38,3", "38,4", "38,5", "38,6",
"38,7", "38,8", "38,9", "39", "39,1", "39,2", "39,3", "39,4",
"39,5", "39,6", "39,7", "39,8", "39,9", "4", "4,1", "4,2", "4,3",
"4,4", "4,5", "4,6", "4,7", "4,8", "4,9", "40", "40,1", "40,2",
"40,3", "40,4", "40,5", "40,6", "40,7", "40,8", "40,9", "41",
"41,1", "41,2", "41,3", "41,4", "41,5", "41,6", "41,7", "41,8",
"41,9", "42", "42,1", "42,2", "42,3", "42,4", "42,5", "42,6",
"42,7", "42,8", "42,9", "43", "43,1", "43,2", "43,3", "43,4",
"43,5", "43,6", "43,7", "43,8", "43,9", "44", "44,1", "44,2",
"44,3", "44,4", "44,5", "44,6", "44,7", "44,8", "44,9", "45",
"45,1", "45,2", "45,3", "45,4", "45,5", "45,6", "45,7", "45,8",
"45,9", "46", "46,1", "46,2", "46,3", "46,4", "46,5", "46,6",
"46,7", "46,8", "46,9", "47", "47,1", "47,2", "47,3", "47,4",
"47,5", "47,6", "47,7", "47,8", "47,9", "48", "48,1", "48,2",
"48,3", "48,4", "48,5", "48,6", "48,7", "48,8", "48,9", "49",
"49,1", "49,2", "49,3", "49,4", "49,5", "49,6", "49,7", "49,8",
"49,9", "5", "5,1", "5,2", "5,3", "5,4", "5,5", "5,6", "5,7",
"5,8", "5,9", "50", "50,1", "50,2", "50,3", "50,4", "50,5", "50,6",
"50,7", "50,8", "50,9", "51", "51,1", "51,2", "51,3", "51,4",
"51,5", "51,6", "51,7", "51,8", "51,9", "52", "52,1", "52,2",
"52,3", "52,4", "52,5", "52,6", "52,7", "52,8", "52,9", "53",
"53,1", "53,2", "53,3", "53,4", "53,5", "53,6", "53,7", "53,8",
"53,9", "54", "54,1", "54,2", "54,3", "54,4", "54,5", "54,6",
"54,7", "54,8", "54,9", "55", "55,1", "55,2", "55,3", "55,4",
"55,5", "55,6", "55,7", "55,8", "55,9", "56", "56,1", "56,2",
"56,3", "56,4", "56,5", "56,6", "56,7", "56,8", "56,9", "57",
"57,1", "57,2", "57,3", "57,4", "57,5", "57,6", "57,7", "57,8",
"57,9", "58", "58,1", "58,2", "58,3", "58,4", "58,5", "58,6",
"58,7", "58,8", "58,9", "59", "59,1", "59,2", "59,3", "59,4",
"59,5", "59,6", "59,7", "59,8", "59,9", "6", "6,1", "6,2", "6,3",
"6,4", "6,5", "6,6", "6,7", "6,8", "6,9", "60", "60,1", "60,2",
"60,3", "60,4", "60,5", "60,6", "60,7", "60,8", "60,9", "61",
"61,1", "61,2", "61,3", "61,4", "61,5", "61,6", "61,7", "61,8",
"61,9", "62", "62,1", "62,2", "62,3", "62,4", "62,5", "62,6",
"62,7", "62,8", "62,9", "63", "63,1", "63,2", "63,3", "63,4",
"63,5", "63,6", "63,7", "63,8", "63,9", "64", "64,1", "64,2",
"64,3", "64,4", "64,5", "64,6", "64,7", "64,8", "64,9", "65",
"65,1", "65,2", "65,3", "65,4", "65,5", "65,6", "65,7", "65,8",
"65,9", "66", "66,1", "66,2", "66,3", "66,4", "66,5", "66,6",
"66,7", "66,8", "66,9", "67", "67,1", "67,2", "67,3", "67,4",
"67,5", "67,6", "67,7", "67,8", "67,9", "68", "68,1", "68,2",
"68,3", "68,4", "68,5", "68,6", "68,7", "68,8", "68,9", "69",
"69,1", "69,2", "69,3", "69,4", "69,5", "69,6", "69,7", "69,8",
"69,9", "7", "7,1", "7,2", "7,3", "7,4", "7,5", "7,6", "7,7",
"7,8", "7,9", "70", "70,1", "70,2", "70,3", "70,4", "70,5", "70,6",
"70,7", "70,8", "70,9", "71", "71,1", "71,2", "71,3", "71,4",
"71,5", "71,6", "71,7", "71,8", "71,9", "72", "72,1", "72,2",
"72,3", "72,4", "72,5", "72,6", "72,7", "72,8", "72,9", "73",
"73,1", "73,2", "73,3", "73,4", "73,5", "73,6", "73,7", "73,8",
"73,9", "74", "74,1", "74,2", "74,3", "74,4", "74,5", "74,6",
"74,7", "74,8", "74,9", "75", "75,1", "75,2", "75,3", "75,4",
"75,5", "75,6", "75,7", "75,8", "75,9", "76", "76,1", "76,2",
"76,3", "76,4", "76,5", "76,6", "76,7", "76,8", "76,9", "77",
"77,1", "77,2", "77,3", "77,4", "77,5", "77,6", "77,7", "77,8",
"77,9", "78", "78,1", "78,2", "78,3", "78,4", "78,5", "78,6",
"78,7", "78,8", "78,9", "79", "79,1", "79,2", "79,3", "79,4",
"79,5", "79,6", "79,7", "79,8", "79,9", "8", "8,1", "8,2", "8,3",
"8,4", "8,5", "8,6", "8,7", "8,8", "8,9", "80", "80,1", "80,2",
"80,3", "80,4", "80,5", "80,6", "80,7", "80,8", "80,9", "81",
"81,1", "81,2", "81,3", "81,4", "81,5", "81,6", "81,7", "81,8",
"81,9", "82", "82,1", "82,2", "82,3", "82,4", "82,5", "82,6",
"82,7", "82,8", "82,9", "83", "83,1", "83,2", "83,3", "83,4",
"83,5", "83,6", "83,7", "83,8", "83,9", "84", "84,1", "84,2",
"84,3", "84,4", "84,5", "84,6", "84,7", "84,8", "84,9", "85",
"85,1", "85,2", "85,3", "85,4", "85,5", "85,6", "85,7", "85,8",
"85,9", "86", "86,1", "86,2", "86,3", "86,4", "86,5", "86,6",
"86,7", "86,8", "86,9", "87", "87,1", "87,2", "87,3", "87,4",
"87,5", "87,6", "87,7", "87,8", "87,9", "88", "88,1", "88,2",
"88,3", "88,4", "88,5", "88,6", "88,7", "88,8", "88,9", "89",
"89,1", "89,2", "89,3", "89,4", "89,5", "89,6", "89,7", "89,8",
"89,9", "9", "9,1", "9,2", "9,3", "9,4", "9,5", "9,6", "9,7",
"9,8", "9,9", "90", "90,1", "90,2", "90,3", "90,4", "90,5", "90,6",
"90,7", "90,8", "90,9", "91", "91,1", "91,2", "91,3", "91,4",
"91,5", "91,6", "91,7", "91,8", "91,9", "92", "92,1", "92,2",
"92,3", "92,4", "92,5", "92,6", "92,7", "92,8", "92,9", "93",
"93,1", "93,2", "93,3", "93,4", "93,5", "93,6", "93,7", "93,8",
"93,9", "94", "94,1", "94,2", "94,3", "94,4", "94,5", "94,6",
"94,7", "94,8", "94,9", "95", "95,1", "95,2", "95,3", "95,4",
"95,5", "95,6", "95,7", "95,8", "95,9", "96", "96,1", "96,2",
"96,3", "96,4", "96,5", "96,6", "96,7", "96,8", "96,9", "97",
"97,1", "97,2", "97,3", "97,4", "97,5", "97,6", "97,7", "97,8",
"97,9", "98", "98,1", "98,2", "98,3", "98,4", "98,5", "98,6",
"98,7", "98,8", "98,9", "99", "99,1", "99,2", "99,3", "99,4",
"99,5", "99,6", "99,7", "99,8", "99,9"), class = "factor"), Pcsge = structure(1:20, .Label = c("0",
"0,1", "0,2", "0,3", "0,4", "0,5", "0,6", "0,7", "0,8", "0,9",
"1", "1,1", "1,2", "1,3", "1,4", "1,5", "1,6", "1,7", "1,8",
"1,9", "10", "10,1", "10,2", "10,3", "10,4", "10,5", "10,6",
"10,7", "10,8", "10,9", "100", "11", "11,1", "11,2", "11,3",
"11,4", "11,5", "11,6", "11,7", "11,8", "11,9", "12", "12,1",
"12,2", "12,3", "12,4", "12,5", "12,6", "12,7", "12,8", "12,9",
"13", "13,1", "13,2", "13,3", "13,4", "13,5", "13,6", "13,7",
"13,8", "13,9", "14", "14,1", "14,2", "14,3", "14,4", "14,5",
"14,6", "14,7", "14,8", "14,9", "15", "15,1", "15,2", "15,3",
"15,4", "15,5", "15,6", "15,7", "15,8", "15,9", "16", "16,1",
"16,2", "16,3", "16,4", "16,5", "16,6", "16,7", "16,8", "16,9",
"17", "17,1", "17,2", "17,3", "17,4", "17,5", "17,6", "17,7",
"17,8", "17,9", "18", "18,1", "18,2", "18,3", "18,4", "18,5",
"18,6", "18,7", "18,8", "18,9", "19", "19,1", "19,2", "19,3",
"19,4", "19,5", "19,6", "19,7", "19,8", "19,9", "2", "2,1", "2,2",
"2,3", "2,4", "2,5", "2,6", "2,7", "2,8", "2,9", "20", "20,1",
"20,2", "20,3", "20,4", "20,5", "20,6", "20,7", "20,8", "20,9",
"21", "21,1", "21,2", "21,3", "21,4", "21,5", "21,6", "21,7",
"21,8", "21,9", "22", "22,1", "22,2", "22,3", "22,4", "22,5",
"22,6", "22,7", "22,8", "22,9", "23", "23,1", "23,2", "23,3",
"23,4", "23,5", "23,6", "23,7", "23,8", "23,9", "24", "24,1",
"24,2", "24,3", "24,4", "24,5", "24,6", "24,7", "24,8", "24,9",
"25", "25,1", "25,2", "25,3", "25,4", "25,5", "25,6", "25,7",
"25,8", "25,9", "26", "26,1", "26,2", "26,3", "26,4", "26,5",
"26,6", "26,7", "26,8", "26,9", "27", "27,1", "27,2", "27,3",
"27,4", "27,5", "27,6", "27,7", "27,8", "27,9", "28", "28,1",
"28,2", "28,3", "28,4", "28,5", "28,6", "28,7", "28,8", "28,9",
"29", "29,1", "29,2", "29,3", "29,4", "29,5", "29,6", "29,7",
"29,8", "29,9", "3", "3,1", "3,2", "3,3", "3,4", "3,5", "3,6",
"3,7", "3,8", "3,9", "30", "30,1", "30,2", "30,3", "30,4", "30,5",
"30,6", "30,7", "30,8", "30,9", "31", "31,1", "31,2", "31,3",
"31,4", "31,5", "31,6", "31,7", "31,8", "31,9", "32", "32,1",
"32,2", "32,3", "32,4", "32,5", "32,6", "32,7", "32,8", "32,9",
"33", "33,1", "33,2", "33,3", "33,4", "33,5", "33,6", "33,7",
"33,8", "33,9", "34", "34,1", "34,2", "34,3", "34,4", "34,5",
"34,6", "34,7", "34,8", "34,9", "35", "35,1", "35,2", "35,3",
"35,4", "35,5", "35,6", "35,7", "35,8", "35,9", "36", "36,1",
"36,2", "36,3", "36,4", "36,5", "36,6", "36,7", "36,8", "36,9",
"37", "37,1", "37,2", "37,3", "37,4", "37,5", "37,6", "37,7",
"37,8", "37,9", "38", "38,1", "38,2", "38,3", "38,4", "38,5",
"38,6", "38,7", "38,8", "38,9", "39", "39,1", "39,2", "39,3",
"39,4", "39,5", "39,6", "39,7", "39,8", "39,9", "4", "4,1", "4,2",
"4,3", "4,4", "4,5", "4,6", "4,7", "4,8", "4,9", "40", "40,1",
"40,2", "40,3", "40,4", "40,5", "40,6", "40,7", "40,8", "40,9",
"41", "41,1", "41,2", "41,3", "41,4", "41,5", "41,6", "41,7",
"41,8", "41,9", "42", "42,1", "42,2", "42,3", "42,4", "42,5",
"42,6", "42,7", "42,8", "42,9", "43", "43,1", "43,2", "43,3",
"43,4", "43,5", "43,6", "43,7", "43,8", "43,9", "44", "44,1",
"44,2", "44,3", "44,4", "44,5", "44,6", "44,7", "44,8", "44,9",
"45", "45,1", "45,2", "45,3", "45,4", "45,5", "45,6", "45,7",
"45,8", "45,9", "46", "46,1", "46,2", "46,3", "46,4", "46,5",
"46,6", "46,7", "46,8", "46,9", "47", "47,1", "47,2", "47,3",
"47,4", "47,5", "47,6", "47,7", "47,8", "47,9", "48", "48,1",
"48,2", "48,3", "48,4", "48,5", "48,6", "48,7", "48,8", "48,9",
"49", "49,1", "49,2", "49,3", "49,4", "49,5", "49,6", "49,7",
"49,8", "49,9", "5", "5,1", "5,2", "5,3", "5,4", "5,5", "5,6",
"5,7", "5,8", "5,9", "50", "50,1", "50,2", "50,3", "50,4", "50,5",
"50,6", "50,7", "50,8", "50,9", "51", "51,1", "51,2", "51,3",
"51,4", "51,5", "51,6", "51,7", "51,8", "51,9", "52", "52,1",
"52,2", "52,3", "52,4", "52,5", "52,6", "52,7", "52,8", "52,9",
"53", "53,1", "53,2", "53,3", "53,4", "53,5", "53,6", "53,7",
"53,8", "53,9", "54", "54,1", "54,2", "54,3", "54,4", "54,5",
"54,6", "54,7", "54,8", "54,9", "55", "55,1", "55,2", "55,3",
"55,4", "55,5", "55,6", "55,7", "55,8", "55,9", "56", "56,1",
"56,2", "56,3", "56,4", "56,5", "56,6", "56,7", "56,8", "56,9",
"57", "57,1", "57,2", "57,3", "57,4", "57,5", "57,6", "57,7",
"57,8", "57,9", "58", "58,1", "58,2", "58,3", "58,4", "58,5",
"58,6", "58,7", "58,8", "58,9", "59", "59,1", "59,2", "59,3",
"59,4", "59,5", "59,6", "59,7", "59,8", "59,9", "6", "6,1", "6,2",
"6,3", "6,4", "6,5", "6,6", "6,7", "6,8", "6,9", "60", "60,1",
"60,2", "60,3", "60,4", "60,5", "60,6", "60,7", "60,8", "60,9",
"61", "61,1", "61,2", "61,3", "61,4", "61,5", "61,6", "61,7",
"61,8", "61,9", "62", "62,1", "62,2", "62,3", "62,4", "62,5",
"62,6", "62,7", "62,8", "62,9", "63", "63,1", "63,2", "63,3",
"63,4", "63,5", "63,6", "63,7", "63,8", "63,9", "64", "64,1",
"64,2", "64,3", "64,4", "64,5", "64,6", "64,7", "64,8", "64,9",
"65", "65,1", "65,2", "65,3", "65,4", "65,5", "65,6", "65,7",
"65,8", "65,9", "66", "66,1", "66,2", "66,3", "66,4", "66,5",
"66,6", "66,7", "66,8", "66,9", "67", "67,1", "67,2", "67,3",
"67,4", "67,5", "67,6", "67,7", "67,8", "67,9", "68", "68,1",
"68,2", "68,3", "68,4", "68,5", "68,6", "68,7", "68,8", "68,9",
"69", "69,1", "69,2", "69,3", "69,4", "69,5", "69,6", "69,7",
"69,8", "69,9", "7", "7,1", "7,2", "7,3", "7,4", "7,5", "7,6",
"7,7", "7,8", "7,9", "70", "70,1", "70,2", "70,3", "70,4", "70,5",
"70,6", "70,7", "70,8", "70,9", "71", "71,1", "71,2", "71,3",
"71,4", "71,5", "71,6", "71,7", "71,8", "71,9", "72", "72,1",
"72,2", "72,3", "72,4", "72,5", "72,6", "72,7", "72,8", "72,9",
"73", "73,1", "73,2", "73,3", "73,4", "73,5", "73,6", "73,7",
"73,8", "73,9", "74", "74,1", "74,2", "74,3", "74,4", "74,5",
"74,6", "74,7", "74,8", "74,9", "75", "75,1", "75,2", "75,3",
"75,4", "75,5", "75,6", "75,7", "75,8", "75,9", "76", "76,1",
"76,2", "76,3", "76,4", "76,5", "76,6", "76,7", "76,8", "76,9",
"77", "77,1", "77,2", "77,3", "77,4", "77,5", "77,6", "77,7",
"77,8", "77,9", "78", "78,1", "78,2", "78,3", "78,4", "78,5",
"78,6", "78,7", "78,8", "78,9", "79", "79,1", "79,2", "79,3",
"79,4", "79,5", "79,6", "79,7", "79,8", "79,9", "8", "8,1", "8,2",
"8,3", "8,4", "8,5", "8,6", "8,7", "8,8", "8,9", "80", "80,1",
"80,2", "80,3", "80,4", "80,5", "80,6", "80,7", "80,8", "80,9",
"81", "81,1", "81,2", "81,3", "81,4", "81,5", "81,6", "81,7",
"81,8", "81,9", "82", "82,1", "82,2", "82,3", "82,4", "82,5",
"82,6", "82,7", "82,8", "82,9", "83", "83,1", "83,2", "83,3",
"83,4", "83,5", "83,6", "83,7", "83,8", "83,9", "84", "84,1",
"84,2", "84,3", "84,4", "84,5", "84,6", "84,7", "84,8", "84,9",
"85", "85,1", "85,2", "85,3", "85,4", "85,5", "85,6", "85,7",
"85,8", "85,9", "86", "86,1", "86,2", "86,3", "86,4", "86,5",
"86,6", "86,7", "86,8", "86,9", "87", "87,1", "87,2", "87,3",
"87,4", "87,5", "87,6", "87,7", "87,8", "87,9", "88", "88,1",
"88,2", "88,3", "88,4", "88,5", "88,6", "88,7", "88,8", "88,9",
"89", "89,1", "89,2", "89,3", "89,4", "89,5", "89,6", "89,7",
"89,8", "89,9", "9", "9,1", "9,2", "9,3", "9,4", "9,5", "9,6",
"9,7", "9,8", "9,9", "90", "90,1", "90,2", "90,3", "90,4", "90,5",
"90,6", "90,7", "90,8", "90,9", "91", "91,1", "91,2", "91,3",
"91,4", "91,5", "91,6", "91,7", "91,8", "91,9", "92", "92,1",
"92,2", "92,3", "92,4", "92,5", "92,6", "92,7", "92,8", "92,9",
"93", "93,1", "93,2", "93,3", "93,4", "93,5", "93,6", "93,7",
"93,8", "93,9", "94", "94,1", "94,2", "94,3", "94,4", "94,5",
"94,6", "94,7", "94,8", "94,9", "95", "95,1", "95,2", "95,3",
"95,4", "95,5", "95,6", "95,7", "95,8", "95,9", "96", "96,1",
"96,2", "96,3", "96,4", "96,5", "96,6", "96,7", "96,8", "96,9",
"97", "97,1", "97,2", "97,3", "97,4", "97,5", "97,6", "97,7",
"97,8", "97,9", "98", "98,1", "98,2", "98,3", "98,4", "98,5",
"98,6", "98,7", "98,8", "98,9", "99", "99,1", "99,2", "99,3",
"99,4", "99,5", "99,6", "99,7", "99,8", "99,9"), class = "factor")), row.names = c(NA,
20L), class = "data.frame")
At first, I though it was a problem with class of variables (numeric, factor...) but even when I convert to numeric it doesnt work...
Data$Pmanche <- levels(Data$Pmanche)[Data$Pmanche]
Data$Pcsge <- levels(Data$Pcsge)[Data$Pcsge]
Thanks for your time!
Here is my code:
## definition workdirectory
setwd(dir="C:/Users/F596028/Documents/nouveau dossier/Optimisation")
##############################
# Packages #
##############################
# Graphics
#install.packages("ggplot2")
library(ggplot2)
##############################
# ouverture du fichier Excel #
##############################
## Fichiers extension .csv du repertoir
files <- list.files(pattern = "\\.csv$")
files <- sort(files)
## Enregistrement des titres
headers <- read.csv("Classeur1.csv", header = F, nrows = 1, as.is = T, sep=";")
## Enregistrement des données
Sub1 <- read.csv(files, skip=1, header=F, sep=";")
colnames(Sub1)=headers
Pmanche<-Sub1[,c(3)]
Pcsge<-Sub1[,c(4)]
Data <- data.frame(Pmanche,Pcsge)
##############################
# Plots #
##############################
#Data$Pmanche <- levels(Data$Pmanche)[Data$Pmanche]
#Data$Pcsge <- levels(Data$Pcsge)[Data$Pcsge]
p<- ggplot(Data, aes(Pmanche,Pcsge))
p + geom_point() + scale_x_continuous(breaks=1:10)
Ok, I solved it.
The problem was the data source.
I learned we need to be careful when taking data from excel... Decimals must be indicated with "." and not ","
Thanks

Error in as.vector(data) when creating a mask for SECR

I am trying to create a mask in SECR using a .shp file. Always getting this error: Error in as.vector(data) :
no method for coercing this S4 class to a vector when i use the make.mask
this is my code:
fence <- rgdal :: readOGR('/Rdata/SECR', layer = 'building')
OGR data source with driver: ESRI Shapefile Source: "/Rdata/SECR",
layer: "building" with 2492 features
It has 1 fields
library(secr)
#This is secr 3.2.1. For overview type ?secr
> qmask = make.mask(Quenda_traps,
+ buffer = 300,
+ type = "trapbuffer",
+ poly = fence,
+ poly.habitat = "FALSE")
Error in as.vector(data) : no method for coercing this S4 class to
a vector
dput(Quenda_traps)
structure(list(x = c(390576.21, 390637.85, 390594.93, 390528.49,
390646.58, 390488.12, 390681.01, 390499.98, 390632.29, 390677.26,
390642.7, 390710.33, 390690.37, 390741.81, 390588.01, 390655.06,
390575.97, 390246.66, 390340.13, 390236.33, 390309.59, 390295.93,
390164.11, 390065.71, 390120.42, 390117.17, 390091.7, 389875.57,
390179.69, 390157.45, 390164.94, 390151.02, 390172.17, 390246.28,
390263.25, 390256.32, 390308.2, 390135.06, 390093.3, 389914.13,
389916.76, 389869.37, 389809.17, 389782.5, 389818.78, 389802.75,
389818.78, 389771.52, 389792.74, 389791.25, 389905.36, 389832.62,
389886.16, 389863.21, 389908.68, 389912.46, 389902.05, 389528.11,
389661.6, 389689.54, 389657.88, 389678.71, 389569.25, 389618.44,
389564.87, 389615.37, 389662.18, 389630.96, 389713.09, 389654.91,
389744.37, 389762.02, 389715.87, 389696.2), y = c(6451727.44,
6451613.91, 6451566.89, 6451511.85, 6451416.66, 6451402.77, 6451287.32,
6451177.83, 6451164.84, 6451108.78, 6451188.57, 6450929.54, 6450855.04,
6450723.66, 6450716.47, 6450451.11, 6450343.83, 6451821.46, 6451645.08,
6451553.05, 6451588.21, 6451541.5, 6451509.03, 6451442.56, 6451358.89,
6451222.49, 6451221.11, 6451303.03, 6451115.63, 6450989, 6450994.62,
6450797.13, 6450761.88, 6450717.22, 6450719.62, 6450399.14, 6450403.03,
6450352.38, 6450197.83, 6451841.15, 6451684.86, 6451526.92, 6451419.83,
6451441.72, 6451316.83, 6451367.43, 6451316.83, 6451235.39, 6451105.9,
6450981.72, 6450992.93, 6450910.1, 6450935.07, 6450787.37, 6450685.86,
6450684.79, 6450600.42, 6451656.26, 6451534.65, 6451395.26, 6451267.42,
6451262.1, 6451257.59, 6451248.14, 6451138.91, 6451096.22, 6451132.2,
6450964.46, 6450964.24, 6450844.98, 6450864.8, 6450717.54, 6450620.58,
6450519.48)), class = c("traps", "data.frame"), row.names = c("1001",
"1002", "1003", "1004.1", "1004.2", "1005.1", "1005.2", "1006.1",
"1006.2", "1006.3", "1006.4", "1007", "1008", "1009", "1010",
"1011", "1012", "2001", "2002", "2003.1", "2003.2", "2003.3",
"2004", "2005", "2006", "2007.1", "2007.2", "2008.1", "2008.2",
"2009.1", "2009.2", "2010.1", "2010.2", "2011.1", "2011.2", "2012.1",
"2012.2", "2013", "2014", "3001", "3002", "3003", "3004.1", "3004.2",
"3005.1", "3005.2", "3005.3", "3006", "3007", "3008.1", "3008.2",
"3009.1", "3009.2", "3010", "3011.1", "3011.2", "3012", "4001",
"4002", "4003", "4004.1", "4004.2", "4005.1", "4005.2", "4006",
"4007.1", "4007.2", "4008.1", "4008.2", "4009.1", "4009.2", "4010",
"4011", "4012"), detector = "multi", usage = structure(c(1, 1,
1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
1, 1, 1, 0, 1... ), .Dim = c(74L, 85L), .Dimnames = list(
c("1001", "1002", "1003", "1004.1", "1004.2", "1005.1", "1005.2",
"1006.1", "1006.2", "1006.3", "1006.4", "1007", "1008", "1009",
"1010", "1011", "1012", "2001", "2002", "2003.1", "2003.2",
"2003.3", "2004", "2005", "2006", "2007.1", "2007.2", "2008.1",
"2008.2", "2009.1", "2009.2", "2010.1", "2010.2", "2011.1",
"2011.2", "2012.1", "2012.2", "2013", "2014", "3001", "3002",
"3003", "3004.1", "3004.2", "3005.1", "3005.2", "3005.3",
"3006", "3007", "3008.1", "3008.2", "3009.1", "3009.2", "3010",
"3011.1", "3011.2", "3012", "4001", "4002", "4003", "4004.1",
"4004.2", "4005.1", "4005.2", "4006", "4007.1", "4007.2",
"4008.1", "4008.2", "4009.1", "4009.2", "4010", "4011", "4012"
), c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
"12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
"22", "23", "24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39", "40", "41",
"42", "43", "44", "45", "46", "47", "48", "49", "50", "51",
"52", "53", "54", "55", "56", "57", "58", "59", "60", "61",
"62", "63", "64", "65", "66", "67", "68", "69", "70", "71",
"72", "73", "74", "75", "76", "77", "78", "79", "80", "81",
"82", "83", "84", "85"))), spacex = 0.240000000048894, spacey = 0.21999999973923, spacing = 79.5867492192872)

combine two data frames into one while keeping the original row numbers

I'm struggling with a very simple problem. I have two data frames to be combined into a single data frame while retaining their original row names. If you're interested to play with the two data frames:
> dput(cc)
structure(list(c = c(166.081273211195, 117.874627144804, 85.7050194973198,
122.960746859139, 144.149802403233, 90.8034500957001, 89.5265981283352,
77.8535718910714, 144.544005656701, 115.597165020403, 109.028391182666,
89.4045716355402, 77.7944830105746, 69.3378920684953, 79.9094499459695,
146.768077595585, 157.933946809176, 92.562729606313, 62.5081476457419,
90.1081848285295, 111.830482369239, 111.596975757741, 99.2311075024839,
145.204385556523, 99.0215341758211, 75.4302512245677, 92.0094563363458,
77.7314808830408)), .Names = "c", row.names = c("26", "27", "28",
"29", "35", "36", "37", "38", "39", "40", "46", "47", "48", "49",
"50", "51", "52", "56", "57", "58", "59", "60", "61", "62", "69",
"70", "71", "72"), class = "data.frame")
> dput(ccc)
structure(list(b = c(76.376257255471, 61.8314936138378, 62.769450181685,
73.6356164203567, 111.690756826382, 76.9294523843767, 61.3534699857719,
69.3647221333577, 83.9764878084258, 81.3800252294203, 69.5091780233591,
87.3595961209547, 78.5074999563006, 74.4479256924594, 81.5920316281566,
96.3417259554163, 75.4138056616399, 76.0553034201146, 95.1759950844736,
81.3252467041995, 86.306305649635, 70.5626459312969, 72.7797520793756,
119.49702877934, 123.268678343102, 88.0450051118928, 76.2139948860248,
98.1496728839206, 126.396927030103, 146.058540478643, 115.7341525964,
87.280600158726, 78.0274068331766, 122.817977752389, 142.491559175427,
152.895839114334, 94.4932174696818, 117.167042165763, 85.5340971715004,
101.480170738897, 117.759691799033, 128.998051359269, 98.3180491401911,
84.5915489017958, 87.4927520958843, 75.5366495973031, 118.088343275321,
121.375320935357, 94.7724147096235, 70.2266610201599, 123.158462686523,
76.87408931845, 94.4365460662552, 105.952134808703, 76.821070196668
)), .Names = "b", row.names = c("1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
"18", "19", "20", "21", "22", "23", "24", "25", "30", "31", "32",
"33", "34", "41", "42", "43", "44", "45", "53", "54", "55", "63",
"64", "65", "66", "67", "68", "73", "74", "75", "76", "77", "78",
"79", "80", "81", "82", "83"), class = "data.frame")
The easiest way to combine is
> c(cc$c, ccc$b)
[1] 166.08127 117.87463 85.70502 122.96075 144.14980 90.80345 89.52660 77.85357 144.54401
[10] 115.59717 109.02839 89.40457 77.79448 69.33789 79.90945 146.76808 157.93395 92.56273
[19] 62.50815 90.10818 111.83048 111.59698 99.23111 145.20439 99.02153 75.43025 92.00946
[28] 77.73148 76.37626 61.83149 62.76945 73.63562 111.69076 76.92945 61.35347 69.36472
[37] 83.97649 81.38003 69.50918 87.35960 78.50750 74.44793 81.59203 96.34173 75.41381
[46] 76.05530 95.17600 81.32525 86.30631 70.56265 72.77975 119.49703 123.26868 88.04501
[55] 76.21399 98.14967 126.39693 146.05854 115.73415 87.28060 78.02741 122.81798 142.49156
[64] 152.89584 94.49322 117.16704 85.53410 101.48017 117.75969 128.99805 98.31805 84.59155
[73] 87.49275 75.53665 118.08834 121.37532 94.77241 70.22666 123.15846 76.87409 94.43655
[82] 105.95213 76.82107
But doing this recreate the row numbers. Is there any simple function to combine while keeping the row names intact? Thanks!
These lines of code should solve the problem
z0 <- as.numeric(c(rownames(cc), rownames(ccc)))
z <- data.frame(c(cc$c, ccc$b))
row.names(z) <- z0
data.frame(z[order(as.numeric(row.names(z))),])

Computing angle between two vectors (with one vector having a specific X,Y position)

I am trying to compute the angle between two vectors, wherein one vector is fixed and the other vector is constantly moving. I already know the math in this and I found a code before:
theta <- acos( sum(a*b) / ( sqrt(sum(a * a)) * sqrt(sum(b * b)) ) )
I tried defining my a as:
a<-c(503,391)
and my b as:
b <- NM[, c("X","Y")]
When I apply the theta function I get:
Warning message:
In acos(sum(a * b)/(sqrt(sum(a * a)) * sqrt(sum(b * b)))) : NaNs produced
I would appreciate help to solve this.
And here is my sample data:
structure(list(A = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label =
c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34",
"35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45",
"46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56",
"57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67",
"68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78",
"79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100",
"101", "102", "103", "104", "105", "106", "107", "108", "109",
"110"), class = "factor"), T = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6 ), X =
c(528.04, 528.04, 528.04, 528.04, 528.04, 528.04), Y = c(10.32,
10.32, 10.32, 10.32, 10.32, 10.32), V = c(0, 0, 0, 0, 0, 0),
GD = c(0, 0, 0, 0, 0, 0), ND = c(NA, 0, 0, 0, 0, 0), ND2 = c(NA,
0, 0, 0, 0, 0), TID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("t1",
"t10", "t100", "t101", "t102", "t103", "t104", "t105", "t106",
"t107", "t108", "t109", "t11", "t110", "t12", "t13", "t14",
"t15", "t16", "t17", "t18", "t19", "t2", "t20", "t21", "t22",
"t23", "t24", "t25", "t26", "t27", "t28", "t29", "t3", "t30",
"t31", "t32", "t33", "t34", "t35", "t36", "t37", "t38", "t39",
"t4", "t40", "t41", "t42", "t43", "t44", "t45", "t46", "t47",
"t48", "t49", "t5", "t50", "t51", "t52", "t53", "t54", "t55",
"t56", "t57", "t58", "t59", "t6", "t60", "t61", "t62", "t63",
"t64", "t65", "t66", "t67", "t68", "t69", "t7", "t70", "t71",
"t72", "t73", "t74", "t75", "t76", "t77", "t78", "t79", "t8",
"t80", "t81", "t82", "t83", "t84", "t85", "t86", "t87", "t88",
"t89", "t9", "t90", "t91", "t92", "t93", "t94", "t95", "t96",
"t97", "t98", "t99"), class = "factor")), .Names = c("A", "T", "X", "Y", "V", "GD", "ND", "ND2", "TID"), row.names = c(NA, 6L),
class = "data.frame")
Your function is not vectorized. Try this:
theta <- function(x,Y) apply(Y,1,function(y,x) acos( sum(x*y) / ( sqrt(sum(x^2)) * sqrt(sum(y^2)) ) ),x=x)
a<-c(503,391)
b <- DF[, c("X","Y")]
theta(a,b)
# 1 2 3 4 5 6
#0.6412264 0.6412264 0.6412264 0.6412264 0.6412264 0.6412264
There is a problem with the acos and atan functions in this application, as you cannot compute angles for the full circle, only for the plus quadrant. In 2D, you need two values to specify a vector, and you need two values (sin and cos) to define it in degrees/radians up to 2pi. Here is an example of the acos problem:
plot(seq(1,10,pi/20)) ## A sequence of numbers
plot(cos(seq(1,10,pi/20))) ## Their cosines
plot(acos(cos(seq(1,10,pi/20)))) ## NOT Back to the original sequence
Here's an idea:
angle <- circular::coord2rad(x, y)
plot(angle)
where "(x,y)" has "angle"
as.numeric(angle)
gives the angle in radians (0,360). To report geographical directions, convert to degrees, and other things, you can use the added parameters for the circular function, e.g.:
x <- coord2rad(ea,eo, control.circular = list(type = "directions",units = "degrees"))
plot(x)
as.numeric(x)

Resources