选择特定列,其中列名位于r中的另一个df中
我在堆栈中找不到解决方案,因此我的问题是: 我有一个有342列的df。 我想创建一个只包含特定列的新df 要保留的列列表位于另一个df中,在3个标题为X、Y、Z的列中列出,用于3个新数据帧 这是我现在的代码:选择特定列,其中列名位于r中的另一个df中,r,dataframe,dplyr,tidyverse,R,Dataframe,Dplyr,Tidyverse,我在堆栈中找不到解决方案,因此我的问题是: 我有一个有342列的df。 我想创建一个只包含特定列的新df 要保留的列列表位于另一个df中,在3个标题为X、Y、Z的列中列出,用于3个新数据帧 这是我现在的代码: # Read the data: data <- data.table::fread("data_30_9.csv") # Import variable names # variable.names.full = openxlsx::read.xlsx(&q
# Read the data:
data <- data.table::fread("data_30_9.csv")
# Import variable names #
variable.names.full = openxlsx::read.xlsx("variables2.xlsx")
Y.variable.names = na.omit(variable.names.full[1])
X.variable.names = na.omit(variable.names.full[2])
Z.variable.names = na.omit(variable.names.full[3])
# Make new DF with only specific columns:
X.Data = data %>% select(as.character(X.variable.names)) # This works as X has only 1 variable
Y.Data = data %>% select(as.character(Y.variable.names)) # This give an error: Error:
# # Can't subset columns that don't exist.
帮忙
数据可在此处获得:
问题是Y.variable.names是一个data.frame,您不能使用它来子集另一个data.frame
您可以通过键入classY.variable.names进行检查
因此,问题的解决方案是将Y.variable.names子集:
对variable.names.full使用lappy并从数据中选择列
那么在最后你想得到3个数据帧吗?是的,有3个数据帧
Y.Data = data %>% select(Y.variable.names[,1])
list_data <- lapply(variable.names.full, function(x)
data[, na.omit(x), drop = FALSE])