使用n个元素的列表从数据框中提取行

juse

我正在处理此数据框:

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的值字符串。我需要创建一个新的df,其中的行是从开头开始提取的值:

f<- function(dataframe, stringval){
listval<- strsplit(stringval,"-") [[1]] 
row1<- dataframe[dataframe[1]==listval[[1]],]
row2<- dataframe[dataframe[1]==listval[[2]],]
row3<- dataframe[dataframe[1]==listval[[3]],]
finaldf<- rbind(row1,row2,row3)
return(finaldf)
}
fmatr<- f(df,"AA-CC-DD")

问题是stringval(在这种情况下具有维度3)可以是任意维度,而且我不知道如何概括该公式并将其用于任何输入维度。谢谢你的帮助

一个孩子

我认为您可以简化功能,同时也可以根据的长度提高灵活性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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章