# list of data frames:
l = list(mtcars, mtcars)
# vector of column names I would like to extract
my_names = c("mpg", "wt", "am")
# these columns might be at different positions in the data frames
解决方案:
result = lapply(l, "[", , my_names)
# look at the top 6 rows of each to verify that it worked:
lapply(result, head)
# [[1]]
# mpg wt am
# Mazda RX4 21.0 2.620 1
# Mazda RX4 Wag 21.0 2.875 1
# Datsun 710 22.8 2.320 1
# Hornet 4 Drive 21.4 3.215 0
# Hornet Sportabout 18.7 3.440 0
# Valiant 18.1 3.460 0
#
# [[2]]
# mpg wt am
# Mazda RX4 21.0 2.620 1
# Mazda RX4 Wag 21.0 2.875 1
# Datsun 710 22.8 2.320 1
# Hornet 4 Drive 21.4 3.215 0
# Hornet Sportabout 18.7 3.440 0
# Valiant 18.1 3.460 0
4条答案
按热度按时间0aydgbwb1#
这里有一个例子(这是你应该在你的问题中加入的东西。如果你能用一个清晰的、可复制/粘贴的、可重复的例子来组织你的问题,你会得到几乎即时的帮助。)
问题:
解决方案:
**说明:**您实际上想要执行
l[[1]][, my_names]
,l[[2]][, my_names]
,...lapply
对每个列表元素应用一个函数。在本例中,函数为[
,它将 rows 作为第一个参数(我们将其留空以表示所有行),将 columns 作为第二个参数(我们将其指定为my_names
)。它将在列表中返回结果。chhkpiq42#
你可以使用dplyr,它很好用,语法也很清楚:
再见!
sr4lhrrt3#
我有一个21列的列表,我想从中提取并创建一个单独的列表,列从1到7、11和21。
kb5ga3dv4#
purrr
解决方案: