Cutpoint/threshold not determined using R? - r

Please find My data below. q constitutes a sample of 100 cases.
I have two covariates follow.up and hematoma, each indicating follow up time (in days) and the event of a post-surgically bleeding after specific procedure.
Based on the cumulative incidence curve below, it seems that the risk decreases after the initial couple of days. I wish to mark or estimate after how many days the slope flattens.
I have applied library(maxstat) but I cannot seem to get it to work.
maxstat.test(Surv(follow.up, hematoma) ~ 1, data=q, smethod="Median", pmethod="HL", alpha=0.05)
Which yields
Error in match.arg(type) : 'arg' should be one of "LogRank"
Which intuitively is wrong as there are no subgroups, and therefore no need for a LogRank? Even changing smethod="LogRank" does not solve the problem.
Can you help me apply maxstat to determine a cut-off (or by any other method)?
q <- structure(list(hematoma = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), follow.up = c(699.2430556,
55.21180556, 272.2604167, 2077.253472, 735.1770833, 193.125,
13.25347222, 81.19444444, 81.28125, 115.2881944, 1015.260417,
0.5, 216.21875, 1471.298611, 10.13194444, 182.2673611, 178.2743056,
10.24652778, 143.2013889, 194.2881944, 13.28125, 122.2291667,
115.2743056, 154.2395833, 1026.28125, 112.25, 11.27083333, 924.1076389,
21.27986111, 0.1, 78.26388889, 110.1805556, 419.2638889, 185.2291667,
140.1840278, 13.26388889, 157.2256944, 126.2847222, 1860.246528,
150.21875, 13.26041667, 12.28472222, 12.29166667, 27.20833333,
185.25, 168.21875, 84.19097222, 479.2569444, 101.2708333, 1120.243056,
12.21527778, 13.17708333, 164.2013889, 115.2708333, 294.28125,
150.15625, 13.18055556, 164.28125, 125.28125, 539.1701389, 138.2291667,
18.28819444, 269.25, 518.2847222, 1505.131944, 1153.28125, 238.21875,
202.25, 11.19513889, 4.034722222, 311.2569444, 206.2777778, 1699.246528,
217.2777778, 175.2465278, 13.28472222, 122.1631944, 448.2395833,
6.274305556, 196.1458333, 171.2708333, 1349.229167, 101.5590278,
13.24652778, 13.58680556, 181.4340278, 96.16666667, 136.2881944,
1153.295139, 553.2569444, 131.2638889, 1629.260417, 143.2361111,
300.2673611, 3.1875, 237.2361111, 130.2777778, 363.1840278, 105.2708333,
150.1770833)), .Names = c("hematoma", "follow.up"), row.names = c(NA,
100L), class = "data.frame")

Related

CRAN/R: Concatenate a column into a list of string-pairs in the form "WX-YZ, AB-WX, AB-YZ"

My dput is given below.
What I want to do: For every group (which is unique in the dataset), I'm trying to construct a new variable, say, countrypairlist, that lists all country PAIRS for each group. You'll see that that this desired information is implicitly contained in the above data in two separate ways.
First, the variable countries list all relevant countries for a particular group (e.g., for the first row, there's only one country, JP). Second, the dummy variables named after countries (e.g., the variable JP) == 1 if the name of that dummy variable is listed in the variable countries for a particular group, and == 0 otherwise.
Using either set of variables (whichever is easier and more computationally efficient), I want to create the countrypairlist that lists all country pairs, separated by ", ". For example, for group == 4253247, I'd need countrypairlist == LI-BE, LI-NL, BE-NL (order doesn't matter, so long as all pairs are listed). As another example, for group == 27439823, I'd need countrypairlist == DK-CH, DK-DE, CH-DE. countrypairlist can equal NA or 0 or any other placeholder when there is only one country in countries (or equivalently, when rowSum(over dummy variables) == 1.
What would be the most effective way to do this? Thank you!
structure(list(group = c(26344962L, 26947173L, 7681129L, 32322556L,
27784632L, 34854057L, 37831629L, 37903977L, 38752541L, 35655241L,
39744060L, 39864671L, 38513906L, 39829036L, 39768832L, 39682597L,
39789349L, 40566389L, 39760845L, 39832290L, 39870577L, 40032764L,
39743044L, 35519833L, 34609489L, 39734460L, 39744800L, 7672727L,
32313557L, 34957472L, 39643836L, 39616295L, 4257105L, 26020976L,
4253247L, 39410092L, 38187175L, 39204726L, 39294100L, 39294069L,
39226773L, 39231044L, 39410460L, 39284069L, 27407686L, 10861963L,
18556217L, 27481648L, 26068821L, 27439823L), countries = c("JP",
"US", "DE", "NL", "JP", "DE", "DE", "DE", "DE", "DE", "DE", "DE",
"DE", "DE", "DE, DD", "DE, US", "DE", "DE", "DE", "DE", "DE",
"DE", "DE", "DE", "DE", "DE, AT", "DE, AT", "DE", "DE", "CH",
"CH, DE", "AT", "CH, AT, US", "DE", "LI, BE, NL", "DE", "DE",
"DE", "DE", "DE", "DE", "US, DE", "DE", "DE", "US, AU, FR", "NL, GB, US",
"JP", "JP", "CH, SE, DK", "DK, CH, DE"), JP = c(1L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L), US = c(0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L,
0L), DE = c(0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L,
0L, 0L, 0L, 0L, 1L), NL = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L), DD = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), AT = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), CH = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 1L, 1L), LI = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BE = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), FR = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L), GB = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L), SE = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L), DK = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L), AU = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L)), row.names = c(NA, 50L), class = "data.frame")
You could do
library(tidyverse)
df %>%
mutate(countrypairlist = sapply(strsplit(df$countries, ", "), function(x) {
if(length(x) == 1) return(x)
paste(apply(combn(x, 2), 2, paste, collapse = "-"), collapse = ";")
})) %>%
select(group, countries, countrypairlist)
#> group countries countrypairlist
#> 1 26344962 JP JP
#> 2 26947173 US US
#> 3 7681129 DE DE
#> 4 32322556 NL NL
#> 5 27784632 JP JP
#> 6 34854057 DE DE
#> 7 37831629 DE DE
#> 8 37903977 DE DE
#> 9 38752541 DE DE
#> 10 35655241 DE DE
#> 11 39744060 DE DE
#> 12 39864671 DE DE
#> 13 38513906 DE DE
#> 14 39829036 DE DE
#> 15 39768832 DE, DD DE-DD
#> 16 39682597 DE, US DE-US
#> 17 39789349 DE DE
#> 18 40566389 DE DE
#> 19 39760845 DE DE
#> 20 39832290 DE DE
#> 21 39870577 DE DE
#> 22 40032764 DE DE
#> 23 39743044 DE DE
#> 24 35519833 DE DE
#> 25 34609489 DE DE
#> 26 39734460 DE, AT DE-AT
#> 27 39744800 DE, AT DE-AT
#> 28 7672727 DE DE
#> 29 32313557 DE DE
#> 30 34957472 CH CH
#> 31 39643836 CH, DE CH-DE
#> 32 39616295 AT AT
#> 33 4257105 CH, AT, US CH-AT;CH-US;AT-US
#> 34 26020976 DE DE
#> 35 4253247 LI, BE, NL LI-BE;LI-NL;BE-NL
#> 36 39410092 DE DE
#> 37 38187175 DE DE
#> 38 39204726 DE DE
#> 39 39294100 DE DE
#> 40 39294069 DE DE
#> 41 39226773 DE DE
#> 42 39231044 US, DE US-DE
#> 43 39410460 DE DE
#> 44 39284069 DE DE
#> 45 27407686 US, AU, FR US-AU;US-FR;AU-FR
#> 46 10861963 NL, GB, US NL-GB;NL-US;GB-US
#> 47 18556217 JP JP
#> 48 27481648 JP JP
#> 49 26068821 CH, SE, DK CH-SE;CH-DK;SE-DK
#> 50 27439823 DK, CH, DE DK-CH;DK-DE;CH-DE
Created on 2022-10-06 with reprex v2.0.2

"object ... not found" with randomForest

I am quite new to R world. I'm currently working on a flight delay prediction.
I'm getting "object 'date01-01-2004' not found" even though it is present.
I tried converting all the factors into dummy variables and doing random forest on it.
library(caret)
library(dummies)
library(randomForest)
flight<-read.csv("E:\\Rdata\\FlightDelays.csv",header = TRUE)
summary(flight$dest)
summary(flight$carrier)
plot(flight$delay~flight$carrier,ylab="delay",xlab="carrier")
plot(flight$delay~flight$dest,ylab="delay",xlab="destination")
plot(flight$delay~flight$origin,ylab="delay",xlab="origin")
plot(flight$delay~flight$dayweek,ylab="delay",xlab="dayweek")
str(flight)
flight$tailnu<-NULL
fl1<-flight$delay
flight$delay<-NULL
flight<-dummy.data.frame(data=flight)
dput(head(flight,50))
flight$delay<-fl1
rf1<-randomForest(delay~.,data=flight)
The output should not be an error and random forest computed one.But I'm getting following output even though it contains date01-01-200 .
structure(list(schedtime = c(1455L, 1640L, 1245L, 1715L, 1039L,
840L, 1240L, 1645L, 1715L, 2120L, 2120L, 1455L, 930L, 1230L,
1430L, 1730L, 2030L, 1530L, 600L, 1830L, 900L, 1300L, 1400L,
1500L, 1900L, 850L, 900L, 1100L, 1300L, 1500L, 1700L, 2100L,
1455L, 1720L, 1030L, 700L, 1300L, 1730L, 840L, 1710L, 1245L,
2120L, 1700L, 1900L, 1525L, 1900L, 1400L, 1515L, 1300L, 1630L
), carrierCO = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), carrierDH = c(0L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), carrierDL = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), carrierMQ = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), carrierOH = c(1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), carrierRU = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), carrierUA = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), carrierUS = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), deptime = c(1455L,
1640L, 1245L, 1709L, 1035L, 839L, 1243L, 1644L, 1710L, 2129L,
2114L, 1458L, 932L, 1228L, 1429L, 1728L, 2029L, 1525L, 556L,
1822L, 853L, 1254L, 1356L, 1452L, 1853L, 841L, 858L, 1056L, 1253L,
1458L, 1655L, 2055L, 1452L, 1710L, 1030L, 656L, 1256L, 1726L,
840L, 1704L, 1245L, 2118L, 1651L, 1850L, 1521L, 1855L, 1357L,
1508L, 1255L, 1625L), destEWR = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), destJFK = c(1L,
1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L,
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), destLGA = c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), distance = c(184L, 213L, 229L, 229L,
229L, 228L, 228L, 228L, 228L, 228L, 229L, 213L, 214L, 214L, 214L,
214L, 214L, 213L, 213L, 213L, 214L, 214L, 214L, 214L, 214L, 229L,
214L, 214L, 214L, 214L, 214L, 214L, 169L, 169L, 169L, 169L, 199L,
199L, 213L, 213L, 213L, 213L, 213L, 213L, 199L, 199L, 199L, 213L,
213L, 199L), `date01-01-2004` = c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), `date01-02-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date01-03-2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date01-04-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date01-05-2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date01-06-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date01-07-2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date01-08-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date01-09-2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date01-10-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date01-11-2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date01-12-2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/13/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/14/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/15/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/16/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/17/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/18/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/19/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/20/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/21/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/22/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/23/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/24/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/25/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/26/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/27/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/28/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/29/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `date1/30/2004` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), `date1/31/2004` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), flightnumber = c(5935L,
6155L, 7208L, 7215L, 7792L, 7800L, 7806L, 7810L, 7812L, 7814L,
7924L, 746L, 1746L, 1752L, 1756L, 1762L, 1768L, 4752L, 4760L,
4784L, 4956L, 4964L, 4966L, 4968L, 4976L, 846L, 2164L, 2168L,
2172L, 2176L, 2180L, 2188L, 2403L, 2675L, 2303L, 2703L, 808L,
814L, 7299L, 7302L, 7303L, 7304L, 2497L, 2385L, 2261L, 2336L,
2216L, 2156L, 2664L, 2181L), originBWI = c(1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), originDCA = c(0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L,
0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L,
1L), originIAD = c(0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L,
1L, 0L, 0L, 0L, 1L, 1L, 0L), weather = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), dayweek = c(4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L), daymonth = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("schedtime", "carrierCO",
"carrierDH", "carrierDL", "carrierMQ", "carrierOH", "carrierRU",
"carrierUA", "carrierUS", "deptime", "destEWR", "destJFK", "destLGA",
"distance", "date01-01-2004", "date01-02-2004", "date01-03-2004",
"date01-04-2004", "date01-05-2004", "date01-06-2004", "date01-07-2004",
"date01-08-2004", "date01-09-2004", "date01-10-2004", "date01-11-2004",
"date01-12-2004", "date1/13/2004", "date1/14/2004", "date1/15/2004",
"date1/16/2004", "date1/17/2004", "date1/18/2004", "date1/19/2004",
"date1/20/2004", "date1/21/2004", "date1/22/2004", "date1/23/2004",
"date1/24/2004", "date1/25/2004", "date1/26/2004", "date1/27/2004",
"date1/28/2004", "date1/29/2004", "date1/30/2004", "date1/31/2004",
"flightnumber", "originBWI", "originDCA", "originIAD", "weather",
"dayweek", "daymonth"), dummies = structure(list(carrier = 2:9,
dest = 11:13, date = 15:45, origin = 47:49), .Names = c("carrier",
"dest", "date", "origin")), 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"), class = "data.frame")
Error in eval(predvars, data, env) : object 'date01-01-2004' not found
My guess (strongly supported by the example below) is that randomForest() can't handle non-syntactic variable/column names, i.e. ones with spaces or punctuation other than dots in them. You could try names(flight) <- make.names(names(flight)) to fix this. It's surprising that read.csv() didn't already fix the names for you: are you sure you didn't use readr::read_csv() instead?
library(randomForest)
## make up random frame with OK names
dd <- data.frame(y=rnorm(1000),x1=rnorm(1000),x2=rnorm(1000))
r1 <- randomForest(y~., data=dd) ## this works fine
Now modify the names to include a predictor with dashes in its name:
names(dd)[3] <- "a-b-c"
r2 <- randomForest(y~., data=dd)
Error in eval(predvars, data, env) : object 'a-b-c' not found
Now fix the names using make.names():
names(dd) <- make.names(names(dd))
r3 <- randomForest(y~., data=dd) ## works
What did make.names() do?
names(dd)
## [1] "y" "x1" "a.b.c"

Extract n rows before and after a value in a data frame

I have a data frame with certain values in a Mark column. I want to extract n values before and after a mark occurs (including the row with the mark).
I find the values I need by using indices <- which(df$Mark == 1) where 1 is the value I'm looking for. Now I need for example the indices of 5 rows before that and 5 rows after (and the one with the mark, so 11 rows in total).
I was thinking about looping through the indices to increase and decrease it by n, and then to subset the data frame with the appended indices. It would be quite nasty though.
Is there a faster way to do it? e.g. in dplyr? Base R answer will be fine as well.
PS: I read the similar question but it doesn't seem to fit my problem.
Here's the df:
df <- structure(list(CH1 = c(-0.02838132, -0.02642141, -0.02511601,
-0.02443906, -0.02414024, -0.02417388, -0.02451562, -0.02393946,
-0.02242496, -0.02104852, -0.0198534, -0.018965, -0.01853905,
-0.01837877, -0.01857743, -0.01847437, -0.0176798, -0.01672419,
-0.01594565, -0.01522826, -0.01485198, -0.01484227, -0.01507997,
-0.01556828, -0.01534458, -0.01473233, -0.01376753, -0.01251296,
-0.0116294, -0.01064516, -0.00966026, -0.00970934, -0.00969434,
-0.00921217, -0.00881855, -0.00832315, -0.00793322, -0.00718289,
-0.00643288, -0.00574532, -0.00535603, -0.00503564, -0.00469125,
-0.00449608, -0.00426023, -0.00406978, -0.00401041, -0.00293273,
-0.00154294, -0.0012401, -0.00108466, -0.00116468, -0.00121755,
-0.00127168, -0.00099938, 0.00017319, 0.0019737, 0.00333815,
0.00396771, 0.00439491, 0.00482015, 0.00515174, 0.0054591, 0.00657748,
0.00863549, 0.01048496, 0.01175601, 0.01272887, 0.01350854, 0.0140988,
0.01475749, 0.01568579, 0.0178412, 0.02036553, 0.02206326, 0.02315541,
0.0241971, 0.02509713, 0.02599812, 0.02695202, 0.02829221, 0.03048931,
0.03233365, 0.03385062, 0.03544046, 0.03690707, 0.03846173, 0.03980747,
0.04145224, 0.04344824, 0.04491818, 0.04621653, 0.04728952, 0.04851875,
0.04968494, 0.05085734, 0.05207405, 0.05288386, 0.05377864, 0.05486108,
0.05593761, 0.0570737, 0.05811917, 0.0593426, 0.06005302, 0.05993605,
0.05984828, 0.06032347, 0.06089914, 0.06177185, 0.06246712, 0.06323557,
0.06413276, 0.06416812, 0.06303713, 0.06264461, 0.06301019, 0.06348586,
0.06426832, 0.06509175, 0.06570335, 0.06598329, 0.06489886, 0.06344099,
0.06281661, 0.06292738, 0.0630922, 0.06334323, 0.06376194, 0.0640305,
0.06399924, 0.06292669, 0.06141425, 0.06046086, 0.06002845, 0.05977921,
0.05952547, 0.05947563, 0.05888767, 0.05753626, 0.05571093, 0.05391346,
0.053135, 0.05240138, 0.05196891, 0.05157123, 0.05107314, 0.05004111,
0.04812315, 0.04601065, 0.04457145, 0.04376672, 0.04318091, 0.04265054,
0.04222059, 0.041618, 0.0403326, 0.03810122, 0.03623468, 0.03515417,
0.0343935, 0.03381848, 0.03330182, 0.03288956, 0.03268627, 0.03136984,
0.02941283, 0.02847409, 0.02766387, 0.0268678, 0.02645577, 0.02606292,
0.02592612, 0.0258327, 0.02477442, 0.02381663, 0.02342893, 0.02307516,
0.02289283, 0.02281655, 0.02268435, 0.02245292, 0.02224212, 0.02203094,
0.02189966, 0.02157357, 0.02129673, 0.02102508, 0.02140636, 0.02188274,
0.02238155, 0.02332248, 0.02454547, 0.02617604, 0.0281874, 0.03046315,
0.03274331, 0.03508138, 0.03754183, 0.04001183, 0.04252412, 0.04485972,
0.04726444, 0.04945699, 0.05171933, 0.05405642, 0.05621058, 0.05858717,
0.06119974, 0.0631874, 0.06494498, 0.06654966, 0.06778654, 0.06895418,
0.0702159, 0.07208018, 0.07471886, 0.07640609, 0.07795521, 0.07929013,
0.08029186, 0.08135373, 0.08218034, 0.08313267, 0.08513113, 0.08683419,
0.08791834, 0.08894015, 0.08975692, 0.09043255, 0.09113128, 0.09186111,
0.09291916, 0.09414985, 0.09492029, 0.09583852, 0.09664483, 0.09738685,
0.09791321, 0.09827693, 0.09842386, 0.09819575, 0.09783525, 0.09711579,
0.09588714, 0.09464117, 0.09342161, 0.09221725, 0.09094498, 0.08979087,
0.08813678, 0.08722136, 0.08660734, 0.0863056, 0.08614786, 0.08576027,
0.08508192, 0.08408207, 0.08224716, 0.0805236, 0.0793857, 0.07835744,
0.07776693, 0.07704602, 0.0762578, 0.0748622, 0.07237066, 0.06983608,
0.06798425, 0.06677078, 0.0660528, 0.06569698, 0.06521391, 0.06434717,
0.06249718, 0.06009818, 0.05800739, 0.05674874, 0.05583431, 0.05525231,
0.05479279, 0.05451269, 0.05392969, 0.05218898, 0.05015828, 0.04889652,
0.04834132, 0.04789649, 0.04757991, 0.04729923, 0.04713846, 0.04664839,
0.044963, 0.0434754, 0.04290805, 0.04229798, 0.04186826, 0.04133299,
0.04069157, 0.03980917, 0.03850414, 0.03609292, 0.03422226, 0.03281199,
0.03131085, 0.03030436, 0.02957696, 0.02881902, 0.02801267, 0.0266918,
0.02524513, 0.02468021, 0.02422629, 0.02412119, 0.02414609, 0.02431383,
0.02445115, 0.02420395, 0.02307613, 0.0225228, 0.02239294, 0.02228146,
0.02247078, 0.02297619, 0.02339916, 0.02380192, 0.02367893, 0.02331219,
0.02357285, 0.0239001, 0.02413282, 0.02442478, 0.02460252, 0.02484779,
0.02539408, 0.02547098, 0.02568989, 0.02612677, 0.02653343, 0.02691505,
0.02732947, 0.02783551, 0.02845577, 0.0294369, 0.03000503, 0.0303594,
0.03106044, 0.03183592, 0.03254643, 0.03336877, 0.03433665, 0.03611183,
0.03759354, 0.03864425, 0.03966344, 0.04067133, 0.04175726, 0.04283931,
0.04391302, 0.04588513, 0.04825597, 0.04982677, 0.05137081, 0.05256286,
0.05363528, 0.05468207, 0.05576433, 0.05764562, 0.06039843, 0.06209074,
0.06330606, 0.06437107, 0.06532845, 0.06612719, 0.06689882, 0.06780636,
0.06962782, 0.07139035, 0.07266567, 0.07378628, 0.07471222, 0.07541681,
0.07637413, 0.07729325, 0.07797043, 0.07928976, 0.08020929, 0.08104116,
0.08185486, 0.08268223, 0.08352671, 0.08418175, 0.08467345, 0.0845037,
0.08452599, 0.08504328, 0.08524517, 0.08562133, 0.08602719, 0.08630189,
0.08619381, 0.08511638, 0.08378159, 0.08298928, 0.08275849, 0.08255187,
0.08253576, 0.08248511, 0.08237054, 0.08131169, 0.07927644, 0.07758952,
0.07666323, 0.07611373, 0.07583219, 0.07563592, 0.07526416, 0.07413918,
0.07218219, 0.07052977, 0.06947646, 0.06885928, 0.06852632, 0.06836134,
0.06829559, 0.06804968, 0.06684561, 0.06508074, 0.06383415, 0.06333059,
0.06309205, 0.06312215, 0.06308869, 0.06325907, 0.06330066, 0.06230686,
0.06121331, 0.06093323, 0.06080826, 0.06103985, 0.06129866, 0.0616675,
0.06222659, 0.06271791, 0.06269919, 0.06317165, 0.06388476, 0.06443688,
0.06532656, 0.06643683, 0.06762666, 0.0688545, 0.06957003, 0.07049679,
0.07145847, 0.07254429, 0.07379688, 0.07520389, 0.07666438, 0.07813754,
0.07980724, 0.08164999, 0.08337331, 0.0850293, 0.08675431, 0.08850279,
0.0903589, 0.09223478, 0.09399396, 0.09617301, 0.09825616, 0.1001754,
0.10215286, 0.10405939, 0.10593522, 0.10771114, 0.10955779, 0.11137673,
0.11350922, 0.11566091, 0.11786379, 0.1201627, 0.12245044, 0.12446617,
0.12668717, 0.12880468, 0.13083965, 0.13320723, 0.13573529, 0.13813868,
0.14067729, 0.14306904, 0.14548148, 0.14758988, 0.14929967, 0.150388,
0.15233791, 0.15449043, 0.15652253, 0.15867107, 0.16075753, 0.16281015,
0.16490422, 0.16620035, 0.16787185, 0.16964339, 0.17125645, 0.17307489,
0.17497104, 0.1767696, 0.17835094, 0.1791379, 0.17976147, 0.18114665,
0.18252681, 0.18401302, 0.18556376, 0.18716799, 0.18869627, 0.18947925,
0.18952475, 0.19017635, 0.19119224, 0.19240457, 0.19406083, 0.19560736,
0.19702311, 0.19838278, 0.19857232, 0.19853884, 0.19905365, 0.19978584,
0.20052382, 0.20136617, 0.20214938, 0.20287189, 0.20312707, 0.20246537,
0.20244905, 0.20259959, 0.20278233, 0.20327239, 0.20340601, 0.20375103,
0.20409654, 0.2038635, 0.20327988, 0.20336974, 0.20360702, 0.20394714,
0.20437293, 0.20460138, 0.20475748, 0.20456536, 0.20375752, 0.20371552,
0.20368604, 0.20359299, 0.2035453, 0.20345831, 0.20340526, 0.20343742,
0.20276403, 0.20228943, 0.20203541, 0.20188482, 0.2018925, 0.20187522,
0.20192079, 0.20182329, 0.20151561, 0.20119683, 0.20101932, 0.20076922,
0.20026171, 0.19982927, 0.19950271, 0.19908488, 0.19889168, 0.19908054,
0.19908604, 0.19869895, 0.1984064, 0.1980564, 0.19761464, 0.19729775,
0.19710955, 0.1974078, 0.19742712, 0.19735026, 0.19726095, 0.19695149,
0.19679484, 0.19663087, 0.19647489, 0.19718868, 0.19785891, 0.19784996,
0.19788255, 0.19757998, 0.19728665, 0.19721918, 0.19730429, 0.19846697,
0.19968045, 0.19982629, 0.20010276, 0.20030209, 0.20027906, 0.2004303,
0.20071957, 0.20170523, 0.20357136, 0.20445201, 0.20511229, 0.2053825,
0.20552762, 0.2057181, 0.20584874, 0.20681113, 0.20865934, 0.20982285,
0.21037306, 0.21086055, 0.21114743, 0.21141832, 0.21172704, 0.21270722,
0.21425499, 0.21508047, 0.21540311, 0.21570137, 0.21566178, 0.2157706,
0.2157407, 0.21586709, 0.21686926, 0.21775885, 0.21800305, 0.21835183,
0.21890219, 0.21994038, 0.22143123, 0.22224599, 0.22288845, 0.22398168,
0.22474541, 0.22512311, 0.22491746, 0.2245485, 0.22401106, 0.22340615,
0.22256076, 0.22140816, 0.22045675, 0.21932106, 0.21813713, 0.21674703,
0.21546952, 0.21415956, 0.21265213, 0.21120454, 0.20967419, 0.2082095,
0.20655277, 0.20475774, 0.20279387, 0.20076135, 0.19890919, 0.19709851,
0.19524029, 0.19323021, 0.19112383, 0.18902898, 0.18701997, 0.18506767,
0.18315709, 0.18136762, 0.17967033, 0.1778329, 0.17634939, 0.17506276,
0.17422849, 0.17365934, 0.17368531, 0.17453934, 0.17546247, 0.17564483,
0.17587478, 0.17576717, 0.17500107, 0.1736709, 0.17258336, 0.17265072,
0.17284319, 0.17171922, 0.16994849, 0.16780928, 0.16595082, 0.16508843
), Mark = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("CH1",
"Mark"), row.names = c(NA, 700L), class = "data.frame")
You don't need dplyr, you can use indexing in base R.
inds = which(df$Mark == 1)
# We use lapply() to get all rows for all indices, result is a list
rows <- lapply(inds, function(x) (x-5):(x+5))
# With unlist() you get all relevant rows
df[unlist(rows),]
I just solved a similar problem with the shift function from data.table. Basically I use shift in the i statement of the data table:
library(data.table)
df[Mark == 1 | shift(Mark==1, n=5L, type = "lag") | shift(search==1, n=5L, type = "lead")]
I always find data.table to be really intuitive.

R error in '[<-.data.frame'... replacement has # items, need #

I am new to R and this one is beyond me. The script below uses two dummy tables (result and count) each with two columns (A and B). I'm running permutations tests to compare the results from A and B. Specifically, I'm looking at result/count for A and B. Both result and count have 20 rows and I've written a loop to run a permutation test for the first 10 rows of each, then the first 11, then 12, up to 20. When it works, which it does on occasion, I get a pretty graph at the end.
#Set up the dummy data - two competing tables (result & count)
result <- data.frame(matrix(runif(40)*100, nrow=20))
names(result)[1] <- paste("A"); names(result)[2] <- paste("B")
count <- data.frame(matrix(runif(40)*100, nrow=20))
names(count)[1] <- paste("A"); names(count)[2] <- paste("B")
n.iter <- 1e3
#Run a permutation test
permtest <- function(result, count) {
n <- dim(result)[1]
# print(n)
stat <- function(x, y) abs(diff(range(colSums(x)/colSums(y))))
swap <- function(x, i) { x[i, ] <- cbind(x[, "B"], x[, "A"])[i, ]; return (x) }
sim <- replicate(n.iter, { i <- runif(n) < 1/2; stat(swap(result, i), swap(count, i)) })
result.stat <- stat(result, count)
p.value <- sum(sim >= result.stat) / length(sim)
return(list(sim, result.stat, p.value))
}
#Compute evolution of p-values over time
p.evol <- data.frame()
for (i in 10:dim(result)[1]) {
# print(i)
permresults <- permtest(result[1:i,], count[1:i,])
p.value <- permresults[[3]]
p.evol <- rbind(p.evol, c(i, p.value, 1-p.value))
}
colnames(p.evol) <- c("day", "p.value", "conf")
dev.new()
plot(p.evol[,1],p.evol[,3], type="b", xlab="Day",ylab="Percentage", main="Evolution of Confidence")
The problem is that while sometimes it runs no problem, most of the time I get Error in '[<-.data.frame'('*tmp*', i, , value = numeric(0)) : replacement has 0 items, need 24. With options(error=traceback) I get the output here, which I am not understanding:
f(ngettext(m, "replacement has %d item, need %d",
"replacement has %d items, need %d"), m, n * p), domain = NA)
16: `[<-.data.frame`(`*tmp*`, i, , value = numeric(0)) at errortest.R#16
15: `[<-`(`*tmp*`, i, , value = numeric(0)) at errortest.R#16
14: swap(result, i)
13: is.data.frame(x)
12: colSums(x)
11: diff(range(colSums(x)/colSums(y))) at errortest.R#15
10: stat(swap(result, i), swap(count, i)) at errortest.R#17
9: FUN(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)[[42L]], ...)
8: lapply(X = X, FUN = FUN, ...)
7: sapply(integer(n), eval.parent(substitute(function(...) expr)),
simplify = simplify)
6: replicate(n.iter, {
i <- runif(n) < 1/2
stat(swap(result, i), swap(count, i))
}) at errortest.R#17
5: permtest(result[1:i, ], count[1:i, ]) at errortest.R#27
4: eval(expr, envir, enclos)
3: eval(ei, envir)
2: withVisible(eval(ei, envir))
1: source("errortest.R", echo = F)
What is particularly puzzling is that it works sometimes! How is this possible? I've also noticed that when I un-comment print(n) and print(i) it seems to make it work more frequently, although it can fail when they are not commented and work when they are. Thanks in advance for the help!
This error pops up when you're unlucky and i <- runif(n) < 1/2 consists only of FALSE, i.e. no permutations happen. You need to add a check in the swap function to fix this problem.

R: Help in melting a data frame "with differing rows"

I have a data frame that I cannot reshape2 :: melt. Can anyone help me see why?
> dput(x2)
structure(list(`26492` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L), `28728` = c(0L, NA, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("26492", "28728"), class = c("data.table",
"data.frame"), row.names = c(NA, -286L), .internal.selfref = <pointer: 0x0000000000330788>)
> melt(x2)
Using as id variables
Error in data.frame(ids, variable, value, stringsAsFactors = FALSE) :
arguments imply differing number of rows: 0, 572
I also created this data frame with a NA value inside and melt works, so I'm not sure where the problem is.
> df1 <- data.frame(x = rnorm(2), y = rnorm(2))
> df1[1,1]<-NA
> df1
x y
1 NA -1.0138754
2 -0.7848228 0.3117672
> melt(df1)
Using as id variables
variable value
1 x NA
2 x -0.7848228
3 y -1.0138754
4 y 0.3117672
data.frames and data.tables, while related, are different beasts and should be treated differently. This is why in data.table Version 1.8.11, a new melt method was provided.
To summarize what I found, using melt.data.frame will give you this error on a data.table but not on a data.frame, so you should either use as.data.frame(YOUR_DATA_TABLE) or (recommended) update your version of data.table.
Example:
library(reshape2)
library(data.table)
packageVersion("data.table")
# [1] ‘1.8.11’
## WORKS WITH WARNING THAT YOU DID NOT
## SUPPLY ID AND MEASURE VARIABLES
data.table:::melt.data.table(x2)
# variable value
# 1: 26492 0
# 2: 26492 0
# 3: 26492 0
# 4: 26492 0
# 5: 26492 0
# ---
# 568: 28728 0
# 569: 28728 0
# 570: 28728 0
# 571: 28728 0
# 572: 28728 0
# Warning message:
# In data.table:::melt.data.table(x2) :
# To be consistent with reshape2's melt, id.vars and measure.vars
# are internally guessed when both are 'NULL'. All non-numeric/integer/
# logical type columns are conisdered id.vars, which in this case are
# columns ''. Consider providing at least one of 'id' or 'measure' vars
# in future.
So, with data.table 1.8.11 and up, which introduce this new melt method, things work. Where's the error you speak of?
## HERE'S YOUR ERROR
reshape2:::melt.data.frame(x2)
# Using as id variables
# Error in data.frame(ids, variable, value, stringsAsFactors = FALSE) :
# arguments imply differing number of rows: 0, 572
## HERE'S A WORKAROUND
head(reshape2:::melt.data.frame(as.data.frame(x2)))
Using as id variables
# variable value
# 1 26492 0
# 2 26492 0
# 3 26492 0
# 4 26492 0
# 5 26492 0
# 6 26492 0
This works with your small example too.
df1 <- data.frame(x = rnorm(2), y = rnorm(2))
df1[1,1]<-NA
DT <- data.table(df1)
reshape2:::melt.data.frame(DT) ## ERROR
reshape2:::melt.data.frame(as.data.frame(DT)) ## NO ERROR
data.table:::melt.data.table(DT) ## Warning. NO ERROR
Update
If there is an ID var specified, it appears that this error does not occur:
df1 <- data.frame(matrix(rnorm(6), ncol = 3))
df1[1, 2] <- NA
df1
DT <- data.table(df1)
reshape2:::melt.data.frame(DT, id.vars="X1") ## NO ERROR
# X1 variable value
# 1 1.3586796 X2 NA
# 2 -0.1027877 X2 -0.05380504
# 3 1.3586796 X3 -1.37705956
# 4 -0.1027877 X3 -0.41499456
data.table:::melt.data.table(DT, id.vars="X1") ## NO ERROR
# X1 variable value
# 1: 1.3586796 X2 NA
# 2: -0.1027877 X2 -0.05380504
# 3: 1.3586796 X3 -1.37705956
# 4: -0.1027877 X3 -0.41499456

Resources