R 使用n个元素的列表从数据帧中提取行
我正在处理这个数据帧:R 使用n个元素的列表从数据帧中提取行,r,R,我正在处理这个数据帧: Col0 <- c("AA","BB","CC","DD","EE","FF") Col1 <- c(2,4,2,6,1,1) Col2 <- c(3,3,2,1,3,4) Col3 <- c(2,2,3,4,6,6) Col4 <- c(1,3,3,1,2,1) Col5 <- c(2,1,1,1,1,4) Col6 <- c(2,4,2,5,4,4) Col7 <- c(3,3,2,1,0,9) Col8 <- c
Col0 <- c("AA","BB","CC","DD","EE","FF")
Col1 <- c(2,4,2,6,1,1)
Col2 <- c(3,3,2,1,3,4)
Col3 <- c(2,2,3,4,6,6)
Col4 <- c(1,3,3,1,2,1)
Col5 <- c(2,1,1,1,1,4)
Col6 <- c(2,4,2,5,4,4)
Col7 <- c(3,3,2,1,0,9)
Col8 <- c(2,2,3,4,5,4)
Col9 <- c(1,3,3,2,2,2)
df <- data.frame(Col0,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9)
Col0我认为您可以简化您的函数,同时在stringval
的长度方面使其更加灵活
f1 <- function(dataframe, stringval) {
ids <- unlist(strsplit(stringval, "-")) # Create vector of letters
finaldf <- dataframe[dataframe[,1] %in% ids,] # Use them to subset 1st col
return(finaldf)
}
# For example:
f1(df, "AA-CC-FF-EE")
# Col0 Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
#1 AA 2 3 2 1 2 2 3 2 1
#3 CC 2 2 3 3 1 2 2 3 3
#5 EE 1 3 6 2 1 4 0 5 2
#6 FF 1 4 6 1 4 4 9 4 2
f1我认为您可以简化您的函数,同时在stringval
的长度方面使其更加灵活
f1 <- function(dataframe, stringval) {
ids <- unlist(strsplit(stringval, "-")) # Create vector of letters
finaldf <- dataframe[dataframe[,1] %in% ids,] # Use them to subset 1st col
return(finaldf)
}
# For example:
f1(df, "AA-CC-FF-EE")
# Col0 Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
#1 AA 2 3 2 1 2 2 3 2 1
#3 CC 2 2 3 3 1 2 2 3 3
#5 EE 1 3 6 2 1 4 0 5 2
#6 FF 1 4 6 1 4 4 9 4 2
f1stringval
是否必须是“字符”?您可以在%c(…)中使用类似于f=function(x,…)x[x[[1]]%的东西,]
并将其称为f(df,“AA”,“CC”,“DD”)
,但如果您的“f”只是子集,您可以直接在%c(“AA”,“CC”,“DD”)中使用df[df[[1]%],]
遵循alexis_laz的注释,而不是这种笨拙的方法。构建了一个函数,用strsplit
将stringval分解为一个值向量,并将其导入新函数中。是否stringval
必须是一个“字符”?您可以在%c(…)中使用类似于f=function(x,…)x[x[[1]]%的东西,]
并将其称为f(df,“AA”,“CC”,“DD”)
,但如果您的“f”只是子集,您可以直接在%c(“AA”,“CC”,“DD”)中使用df[df[[1]%],]
遵循alexis_laz的注释,而不是这种笨拙的方法。构建了一个函数,用strsplit
将stringval分解为一个值向量,并将其导入新函数中。非常有效,谢谢。当我投票时,我会给你的答案打分,谢谢。当我投票时,我会给你的答案打分