【发布时间】:2020-08-15 08:49:37
【问题描述】:
我是 R 编程新手,试图编写一个循环来从包含数据帧的列表中提取一个数字。但是,我似乎无法正确地对列表进行子集化。这可能是基本的,但现在它让我发疯了!
df1 <- tibble("a"=c(1,2,3,4,5), "b"=c(22,23,24,25,26), c=c("alpha", "beta","alpha", "beta", "alpha"))
df2 <- tibble("a"=c(1,2,3,4,5), "b"=c(22,23,24,25,26), c=c("alpha", "beta","alpha", "beta", "alpha"))
df3 <- tibble("a"=c(1,2,3,4,5), "b"=c(22,23,24,25,26), c=c("alpha", "beta","alpha", "beta", "alpha"))
df4 <- tibble("a"=c(1,2,3,4,5), "b"=c(22,23,24,25,26), c=c("alpha", "beta","alpha", "beta", "alpha"))
list <- c(df1, df2, df3, df4)
res <- vector("numeric",4)
df2[[2,2]]
for (i in list){
res[i] <- i[[2,2]]
}
我得到这个(和类似的)错误; “i[[2, 2]] 中的错误:下标数不正确”
感谢您的帮助。
【问题讨论】:
-
(1) 将变量命名为
list并不好,如果您的意思是命名为list的变量或命名为list的原始函数,这并不总是很清楚。 (2) 在您的for循环中,i是一个tbl_df,因此应该应用“正常”帧索引,即[。 (3)[[通常用于单个元素。 (99) 我不知道你想在这里做什么,但也许i[2,2]是你需要的? (注意它会返回一个tbl_df,1行1列。) -
好的,我明白了。您需要查看您的
list对象:它不是四个帧/小标题的列表,它是一个list(原始 R),具有 12 个名为"a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c"(是的,重复)的元素,每个元素都是一个向量。 -
我认为您的意思是
list <- list(df1, df2, df3, df4)...但我真的鼓励您将其命名为list以外的其他名称。 -
JML,如果其中一个答案解决了您的问题,请accept it;这样做不仅为回答者提供了一些积分,而且还为有类似问题的读者提供了一些关闭。尽管您只能接受一个答案,但您可以选择对您认为有帮助的人进行投票。 (如果仍有问题,您可能需要编辑您的问题并提供更多详细信息。)
-
感谢您的提示,r2evans!这也是新的;)