저는 R을 오랫동안 사용 해왔다. 그래서 "안녕하세요, 저는 초심자입니다. 나에게 설명해주십시오"라고 말할 수는 없습니다. 하지만 지금은이 문제에 직면 해 있기 때문에 물어보고 싶은 것이 있습니다. 문제를 해결하지 않고 다른 문제를 해결할 때마다. 그러나 오늘 나는 충분히 호기심이 묻습니다.요소가 단일 열이 아닌 데이터 프레임
데이터 프레임을 동일한 길이의 열 집합으로 생각합니다. 나는 그것이 잘못되었음을 알고 있습니다. 데이터 프레임에 행렬, 다중 열 요소를 삽입 할 수 있기 때문에 잘못되었습니다. 실수로 그렇게하면 화면에 제대로 인쇄되지 않습니다.
겉으로는 일치하지 않는 열 R "머리"가있다라고하고 무엇을 정말 무슨 사이의 이름,
내가 데이터 프레임을 요청하는 확실한 방법을 찾을 수 없습니다 "당신이다이 있습니다 변수 데이터 프레임 당 일반 열 하나의 열 "또는"인생을 어렵게 만드는 그러한 좌절감을주는 내부 구조가 있습니까? "
이 작업을 수행하면 무슨 뜻인지 알 수 있습니다. 실행
example(predict.lm)
예측 방법을 실행하고 pt라는 출력 행렬을 생성합니다.
그런 다음 NPK은 무엇인가, 그것은 NPK 그 후
npk$predict <- predict(npk.aov, type = "terms")
라는 이름의 데이터 프레임에 추가, 대신에 매트릭스 출력으로 무료 서 복용, 자신의 예제의 마지막 단계를 변경? 여전히 데이터 프레임입니까?
> is.data.frame(npk)
[1] TRUE
흠 그래, 머리가 열 이름을보고 어떻게주의 :
> head(npk)
block N P K yield predict.block predict.N predict.P
1 1 0 1 1 49.5 -0.8500000 -4.9250000 0.2083333
2 1 1 1 0 62.8 -0.8500000 4.9250000 0.2083333
3 1 0 0 0 46.8 -0.8500000 -4.9250000 -0.2083333
4 1 1 0 1 57.0 -0.8500000 4.9250000 -0.2083333
5 2 1 0 0 59.8 2.5750000 4.9250000 -0.2083333
6 2 1 1 1 58.5 2.5750000 4.9250000 0.2083333
predict.K predict.N:P predict.N:K predict.P:K
1 -0.9583333 0.9416667 1.1750000 0.4250000
2 0.9583333 -2.8250000 1.1750000 -0.1416667
3 0.9583333 0.9416667 1.1750000 -0.1416667
4 -0.9583333 0.9416667 -3.5250000 -0.1416667
5 0.9583333 0.9416667 1.1750000 -0.1416667
6 -0.9583333 -2.8250000 -3.5250000 0.4250000
predict.N:P:K
1 0.0000000
2 0.0000000
3 0.0000000
4 0.0000000
5 0.0000000
6 0.0000000
이 "predict.block"또는 "predict.P"라는 이름의 열이있는 것처럼 표시한다, 그러나이있다 하지 :
> colnames(npk)
[1] "block" "N" "P" "K" "yield"
[6] "predict"
기능은 "COLNAMES"더 적절 "column_or_whatever_else_we_find_here"라는 것입니다.
그리고 당신은 그 "열"내부는 구조를 알고 매트릭스 방식으로 요청해야 예측에 액세스하려면
> npk$predict.P
NULL
을 시도하고 아무것도 얻을 :
> npk$predict[ , "P"]
1 2 3 4 5
0.2083333 0.2083333 -0.2083333 -0.2083333 -0.2083333
6 7 8 9 10
0.2083333 -0.2083333 0.2083333 0.2083333 0.2083333
11 12 13 14 15
-0.2083333 -0.2083333 -0.2083333 0.2083333 -0.2083333
16 17 18 19 20
0.2083333 0.2083333 -0.2083333 -0.2083333 0.2083333
21 22 23 24
-0.2083333 0.2083333 0.2083333 -0.2083333
난 그냥이 예제를 포착를 데이터 프레임에 비 컬럼 항목을 추가 할 때 종종 우연히 저와 학생들에게 일어나는 것을 보여줍니다.
NPK에 가입하고 난 인생이가는대로 너무
> npk.new <- merge(npk, pt, by = "row.names",
suffixes = c("", ".predict"))
> colnames(npk.new)
[1] "Row.names" "block" "N"
[4] "P" "K" "yield"
[7] "block.predict" "N.predict" "P.predict"
[10] "K.predict" "N:P" "N:K"
[13] "P:K" "N:P:K"
그러나, 때로는 우리가 우리가이 생각하는 함수에서 매트릭스를 얻을 수 있음을 이해하고, 출력이 병합입니다 예측하는 올바른 방법 실수로 "데이터 프레임 내부의 행렬"구조로 끝납니다.
나는 "당신도 이것을 알아 차리고 나에게 좌절시키는 방식으로 당신을 좌절시키는가요?"라고 물어보고 싶습니다. 그러나 그것이 건설적이지 않다는 것을 나는 안다. 여기에 더 건설적인 것들을 묻습니다.
데이터 프레임이 주어지면 그 안에있는 모든 "열"이 단일 열인 경우 알 수있는 가장 직접적인 경로는 무엇입니까? 나는 시도했습니다 같은 명백한 :
> sapply(npk, is.atomic)
block N P K yield predict
TRUE TRUE TRUE TRUE TRUE TRUE
> sapply(npk, is.vector)
block N P K yield predict
FALSE FALSE FALSE FALSE TRUE FALSE
지금까지, 나는 그것이 행렬 인 경우 내가
> sapply(npk, is.matrix)
block N P K yield predict
FALSE FALSE FALSE FALSE FALSE TRUE
그러므로 나는 각을 요청하는 함수를 작성할 수있는 데이터 프레임의 요소를 요청할 수 있습니다 알고 열 "당신은 매트릭스"당신은 "데이터 프레임"입니까, 당신은 "배열"입니까? 그러나 너무 지루해 보입니다.
어떻게 당신에게 보통 열 이름 이외의 다른 기능을하는지 NPK의 $의 자동 완성을보고는 어떻습니까? RStudio에서는 아이콘을 훑어보기 만하면됩니다. – AlexR
'str'은 친구입니다 (예 :'str (npk)'). – Gregor
또한, "머리가 열 이름을보고합니다."*는 머리를 설명하기에 좋지 않은 것이라고 생각합니다. 'head'가하는 일은 처음 6 행을 반환 (그리고 인쇄)하는 것입니다. 'names()'또는'colnames()'는 열 이름을 반환하고''predict "'라는 단일 열이 있습니다. 단지 행렬 일뿐입니다. – Gregor