合并两个数据框时出错/as.matrix

问题描述 投票:0回答:0

我想从数据框中提取某些列并将它们组合成一个新列。 首先,我从原始数据中提取一个子集,然后删除并重新组织一些列。 然后我将第 26:37 列放入一个新的数据框 (data_test_pos) 并将 11:22 放入 data_test2。 但是当我尝试将它们组合到一个新的数据框中(使用 as.matrix)时,我得到了错误:

h(simpleError(msg, call)) 中的错误: 在为函数“as.matrix”选择方法时评估参数“x”时出错:选择了未定义的列

如果我是对的,错误意味着 R 无法找到所有 1 到 12 列 - 但我不知道为什么。

这是我的代码:

data_seq <- data[ which(data$MODE=='sequential'),]

data_test1 = data_seq[,c(1,10:23,36,37)] # removing unnecessary columns

data_test1 = data_test1[,c(3:17, 1:2)]

data_test_pos <- data_seq[,c(26,29,32,35,38,41,44,47,50,53,56,59)]
data_test2    <- data_seq[,11:22]

xxx<-data.frame()

for (t in 1:nrow(data_test1)) {
  xxx[t,1:12]<-as.matrix(data_test2[t,as.matrix(data_test_pos[t,])])
}

data_test_recency <- cbind(data_seq,xxx)

我的代码的子集可能会重现问题:

structure(list(VP = structure(c(1L, 1L, 1L, 1L, 1L), levels = c("1", 
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "2", 
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "3", 
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "4", 
"40", "41", "42", "43", "44", "45", "46", "5", "6", "7", "8", 
"9", "VP"), class = "factor"), BLOCK = c("2", "2", "2", "2", 
"2"), TRIAL = c("1", "2", "3", "4", "5"), SEX = c("1", "1", "0", 
"1", "1"), MODE = structure(c(2L, 2L, 2L, 2L, 2L), levels = c("parallel", 
"sequential"), class = "factor"), OUTL = structure(c(1L, 2L, 
1L, 1L, 1L), levels = c("no", "yes"), class = "factor"), PRS = c("2", 
"12", "5", "10", "7"), DUR = c("1200", "1200", "1200", "1200", 
"1200"), L_MEAN = c("-3", "18", "13", "-24", "23"), G_MEAN = c(-3, 
11, 13, -24, 23), s1 = c("-8", "18", "6", "-26", "28"), s2 = c("-5", 
"14", "20", "-17", "21"), s3 = c("3", "22", "10", "-23", "23"
), s4 = c("-2", "14", "18", "-28", "29"), s5 = c("-5", "18", 
"8", "-20", "23"), s6 = c("-6", "25", "19", "-19", "26"), s7 = c("2", 
"17", "13", "-28", "23"), s8 = c("0", "16", "11", "-30", "19"
), s9 = c("2", "18", "9", "-26", "17"), s10 = c("-6", "22", "15", 
"-25", "25"), s11 = c("-5", "-30", "20", "-16", "18"), s12 = c("-4", 
"-26", "6", "-25", "20"), RESP = c(-5, 17, 12, -24, 22), RT = c("1871", 
"2430", "2006", "3955", "3114"), ITI = c("500", "500", "500", 
"500", "500"), POS1 = c("5", "10", "3", "8", "6"), x1 = c("-23", 
"-23", "-29", "-10", "2"), y1 = c("18", "10", "-2", "-12", "11"
), POS2 = c("2", "11", "2", "11", "1"), x2 = c("2", "-22", "-9", 
"-23", "26"), y2 = c("22", "4", "12", "-20", "23"), POS3 = c("10", 
"12", "12", "5", "5"), x3 = c("22", "20", "-14", "21", "28"), 
    y3 = c("4", "6", "-28", "14", "-30"), POS4 = c("7", "3", 
    "11", "12", "3"), x4 = c("9", "7", "-16", "9", "24"), y4 = c("-21", 
    "-25", "-17", "-27", "-19"), POS5 = c("12", "4", "6", "1", 
    "11"), x5 = c("2", "-19", "22", "-20", "12"), y5 = c("-25", 
    "-17", "13", "-28", "-4"), POS6 = c("8", "1", "5", "3", "10"
    ), x6 = c("-19", "15", "5", "3", "2"), y6 = c("26", "-7", 
    "29", "-2", "4"), POS7 = c("6", "5", "1", "6", "4"), x7 = c("11", 
    "-12", "28", "-9", "21"), y7 = c("10", "-17", "13", "13", 
    "-15"), POS8 = c("9", "8", "7", "10", "9"), x8 = c("-6", 
    "-15", "16", "-18", "4"), y8 = c("16", "-29", "-12", "-4", 
    "-23"), POS9 = c("3", "9", "10", "7", "12"), x9 = c("-9", 
    "25", "-30", "-6", "28"), y9 = c("-19", "10", "17", "22", 
    "6"), POS10 = c("4", "2", "4", "4", "7"), x10 = c("15", "-9", 
    "-7", "-1", "21"), y10 = c("30", "0", "13", "7", "1"), POS11 = c("11", 
    "6", "8", "9", "8"), x11 = c("-26", "6", "7", "-27", "-8"
    ), y11 = c("0", "-29", "-17", "-21", "26"), POS12 = c("1", 
    "7", "9", "2", "2"), x12 = c("14", "-26", "-4", "-24", "3"
    ), y12 = c("0", "28", "-24", "-24", "18"), STRT_et = c("2326169", 
    "2332032", "2338451", "2344444", "2352388"), STRT_pr0 = c("429848", 
    "435711", "442129", "448122", "456065"), STRT_pr1 = c("429848", 
    "435711", "442129", "448122", "456065")), row.names = 41:45, class = "data.frame")

感谢任何帮助

r dataframe matrix cbind
© www.soinside.com 2019 - 2024. All rights reserved.