我有一个数据帧列表,下面是其中的两个:
structure(list(a = list(c("280", "330", "399", "416"), "2962",
c("1095", "1765"), "764", "165"), b = list(c("72", "78",
"88", "157", "398"), c("5", "93", "147", "174", "1046", "1325",
"1347", "1659", "1739", "1992", "2053", "2286", "2401", "2433",
"2607", "2653", "2750", "2768", "2852", "2946"), c("181", "366",
"497", "608", "781", "929", "962", "1162", "1165", "1232", "1423",
"1448", "1485", "1577", "1580", "1623", "1655", "1725"), c("125",
"133", "470", "481", "566", "639", "715", "737", "781", "936",
"957"), c("100", "140"))), .Names = c("a", "b"), row.names = c(1:5), class = "data.frame")
structure(list(a = list("965", "552", c("467", "493", "1433"
), "497", c("416", "1875")), b = list(c("285", "289", "305",
"373", "510", "535", "548", "817", "862", "866", "977"), c("65",
"282", "330", "455", "597", "921", "923"), c("153", "156", "157",
"159", "198", "231", "271", "295", "336", "347", "466", "492",
"516", "548", "605", "696", "705", "716", "720", "797", "861",
"876", "1040", "1086", "1173", "1261", "1263", "1375", "1427",
"1454", "1530", "1571", "1623", "1636"), c("17", "79", "151",
"189", "193", "258", "543", "637"), c("131", "357", "539", "641",
"756", "827", "848", "1079", "1280", "1364", "1429", "1454",
"1485", "1493", "1547", "1602", "1629", "1711", "1786", "1817",
"1864", "1944", "1955", "1960", "2379", "2400"))), .Names = c("a",
"b"), row.names = 6:10, class = "data.frame")
请注意,列a和b也是列表。所以我有一个以列表为列的数据框列表。我正在尝试应用一个函数来产生新的列,如下所示:
mylist <- lapply(mylist, function(x) {x$count_diff <- as.vector(t(abs(outer(as.numeric(x$a), as.numeric(x$b), FUN="-")))); x})
但是我得到一个错误:
Error in outer(as.numeric(x$a), as.numeric(x$b), FUN = "-") :
(list) object cannot be coerced to type 'double'
因此,如果我尝试使用子集运算符[&[[然后会分别出现以下错误:
Error in `[.data.frame`(x, a) : object 'a' not found
Error in (function(x, i, exact) if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, :
object 'a' not found
我希望看到的结果如下:
Inputs: a = 280 330 399 416, b = 72 78 88 157 398
Output: count_diff = "208 202 192 123 118 258 252 242 173 68 327 321 311 242 1 344 338 328 259 18"
但是,我无法到达列表中的元素并且不清楚原因!任何帮助深表感谢!