tctcab monster_white 数据框本身就是list,使用向量的所有场景,都可以用 df$column的形式满足,我是想象不到有什么特地把数据框转回向量的需求。 如果有,LZ是否可以描述一下啥是真正想解决的问题? > df=mtcars > is.list(df) [1] TRUE > is.data.frame(df) [1] TRUE
fenguoerbian 你如果是在想形如python的 a, b, c = my_data_frame 这样的写法,那么你可能是需要zeallot包。不过其中定义的%<-%应该会和并行计算future框架的%<-%冲突,如果同时有这两者的使用需求的话要当心。
tctcab monster_white 数据框mydata本身就是一个list, 每一列就是一个向量,连转换都不用,把class名字改回list就是你想要的结果了 mydata <- data.frame(a=c(1:5),b=c(2:6),c=(3:7)) class(mydata)="list" mydata #> $a #> [1] 1 2 3 4 5 #> #> $b #> [1] 2 3 4 5 6 #> #> $c #> [1] 3 4 5 6 7 #> #> attr(,"row.names") #> [1] 1 2 3 4 5 <sup>Created on 2024-08-08 with reprex v2.1.0</sup>
monster_white fenguoerbian 想把数据框弄成list是因为后续分析用到的函数的对象只能是list类型,后续我想对数据框的每一列想进行取交集。 Reduce(intersect, dataframe)
fenguoerbian monster_white 你可以试一下,直接可以的 mydata <- data.frame(a=c(1:5),b=c(2:6),c=(3:7)) Reduce(intersect, mydata)
yihui 数据框本质上就是(整齐的)列表,只不过给列表套了一个类名而已。 > dput(data.frame(x = 1)) structure(list(x = 1), class = "data.frame", row.names = c(NA, -1L)) 把列表的元素转成单独的裸向量几乎一定属于逆行操作(污染环境),真正需要这种操作的场景应该是几乎不存在。如果动了这种念头,那这问题肯定有更好的解决方案。