데이터 프레임에있는 데이터를 가져 와서 특정 변수를 문자 벡터로 바꾼다. 이것은 'id'에 의해 수행되고 그 결과는리스트에 저장됩니다.함수에 전달할 데이터 프레임에서 열/변수 찾기 - R
이 무슨 일이 일어나고 있는지 보여줍니다
###sample data
id<-rep(1:5, each=4)
fruits<-c("orange", "apple", "banana", "lemon", "kiwi")
shapes<-c("triangle", "square", "circle", "rhombus")
dat<-as.data.frame(id)
dat$fruits<-sample(fruits,20,replace=T)
dat$shapes<-sample(shapes,20,replace=T)
dat$anotherid<-rep(1:2, each=10)
dat
이 샘플 데이터는 ID-보내고 관찰을위한 두 가지 변수, 우리는 벡터 시퀀스로 설정하실 수 있습니다 두 가지 변수가 포함되어 있습니다. 이것은 내가 그은을 수행 때우기 스크립트가
id fruits shapes anotherid
1 1 kiwi triangle 1
2 1 banana rhombus 1
3 1 lemon rhombus 1
4 1 lemon rhombus 1
5 2 orange rhombus 1
6 2 lemon triangle 1
7 2 apple triangle 1
8 2 banana circle 1
9 3 apple circle 1
10 3 kiwi square 1
11 3 apple rhombus 2
12 3 orange rhombus 2
13 4 orange triangle 2
14 4 orange rhombus 2
15 4 apple triangle 2
16 4 lemon triangle 2
17 5 banana square 2
18 5 orange rhombus 2
19 5 orange triangle 2
20 5 orange rhombus 2
: '과일'과 '모양'이 무작위로 선택되어 있기 때문에 것이다이 같은 (분명히 코드를 실행할 때마다 다른 결과를 반환합니다 보이는 . 변환 말, 우리는 문자 벡터에 변수 '과일'을 설정하고자하는, 그리고 'ID'에 의해 그것을 할이 :
n<-which(colnames(dat)=="id")
n1<-which(colnames(dat)=="fruits")
z<-split(dat[n1],dat[n], drop=TRUE)
L = lapply(z, function(x) as.character(unlist(x)))
L
그것은 다음과 같습니다 : 그래서
$`1`
[1] "kiwi" "banana" "lemon" "lemon"
$`2`
[1] "orange" "lemon" "apple" "banana"
$`3`
[1] "apple" "kiwi" "apple" "orange"
$`4`
[1] "orange" "orange" "apple" "lemon"
$`5`
[1] "banana" "orange" "orange" "orange"
, 나는 셈이다 g를 함수로 바꾼다. 내가 변수 어떤 'ID'및 기타 변수를 호출 할 수 있도록 내가 설정하는 함수는 일반적인 만들려고 노력하고있다, 그러나
myfunction<-function(dat,id,fruits){
n<-which(colnames(dat)=="id")
n1<-which(colnames(dat)=="fruits")
z<-split(dat[n1],dat[n], drop=TRUE)
L = lapply(z, function(x) as.character(unlist(x)))
return(L)
}
myfunction(dat,id,fruits)
: 다음과 같은 처리를 할 경우는 위의 예를 들어 잘 작동 벡터로. 아래에서, 나는 'col1'인수를 사용하여 id 변수를 참조하고 'col2'는 벡터화를위한 변수를 나타냅니다. 위의 함수에서 col1과 col2를 제거했습니다. ('col1'& 'col2'라는 변수를 찾고 있기 때문에 분명히 작동하지 않습니다.
말하자면, id 변수로 'anotherid'를 사용하고 벡터화 ID로 'shapes'를 사용하고 싶습니다. 내가 뭔가 잘못하고 있어요 이것은 내가 함수의 dataframe에 columnn 번호를 찾기 위해 노력하고 어떻게 작동하지 않습니다 :
myfunction<-function(dat,col1,col2){
n<-which(colnames(dat)==col1)
n1<-which(colnames(dat)==col2)
z<-split(dat[n1],dat[n], drop=TRUE)
L = lapply(z, function(x) as.character(unlist(x)))
return(L)
}
myfunction(dat,anotherid,shapes)
(단지 완전성에 대한) 다음 오류 메시지
Error in which(colnames(dat) == col1) : object 'anotherid' not found
도움을 주시면 감사하겠습니다. 분명히이 간단한 예제를 통해 코드를 적절한 변수 이름으로 변경할 수 있습니다.하지만 100 개의 변수가있는 데이터 프레임에 대해 일반화하고이 스크립트를 여러 번 사용하려면 일반 함수가 가장 좋습니다.
'set.seed()'를 사용하여'sample'을 재현성있게 만드십시오. 그러면 다른 사람들이 귀하의 질문에 실제로 답변했는지 여부를 확인할 수 있습니다. – A5C1D2H2I1M1N2O1R2T1