$运算符对于循环中的原子向量无效

时间:2019-09-01 08:14:41

标签: r loops

> dput(data1)
structure(list(x = c(35.829875, 35.64903952, 35.87826747, 35.83962222, 
35.94296667, 35.94184918, 35.87022926, 35.84118463, 35.84861677, 
35.86461772), y = c(128.550225, 128.4373915, 128.6094381, 128.5711917, 
128.5503917, 128.5629876, 128.6917042, 128.610549, 128.6244008, 
128.595875), a = c(116.0591995, 59.11426175, 255.8600501, 190.7975442, 
196.714572, 412.3129316, 267.8455805, 459.7797184, 131.1416782, 
380.2493612), b = c(411.7159889, 438.7649907, 54.60376166, 339.2778169, 
321.3185479, 319.6080094, 476.1722991, 372.3019021, 205.9843768, 
184.6394583)), class = "data.frame", row.names = c(NA, -10L))

> listname
[1] "data1" "data2" "data3" "data4" "data5"

> check_list<-list()
> for (i in listname) {
+  for (j in listname) {
+   check <- table(i["x"] == j["x"])
+   check_list[[paste0(i,"_",j)]] <- check
+  }
+ }

> check_list
$data1_data1
< table of extent 0 >
  

列表名[1] $ x   listname [1] $ x中的错误:$运算符对原子向量无效

我写了一个循环语句,比较多个数据帧的x变量。但是显示了相同的结果。 因此,我独自运行了代码。然后我发现发生此错误。 我该怎么办才能解决此错误?

+示例数据已添加。一共有5个数据,例如data1。

1 个答案:

答案 0 :(得分:0)

获取列表中的所有数据并从每个数据框中提取"x"列,然后使用outer检查all的值是否相同,这将返回TRUE / FALSE值。

list_df <- mget(paste0("data", 1:5))
all_xs <- lapply(list_df, `[[`, 'x')

compare_fun <- function(x, y) all(x == y)

outer(all_xs, all_xs, Vectorize(compare_fun))