Подстановка столбцов на основе одного значения в строке - PullRequest
0 голосов
/ 09 февраля 2019

Я хотел бы установить подмножество столбцов, у которых значение 5-й строки имеет значение P1.

Мой текущий подход заключается в следующем:

test<- first_sheet[sapply(first_sheet[5,], FUN = function(x){x=="P1" })]

Однако возвращается ошибка, которая сообщаетчто выбраны неопределенные столбцы.

Однако логический вектор

sapply(first_sheet[5,], FUN = function(x){x=="P1" })

возвращает логический вектор.

Могу ли я узнать, что является причиной этого или как я смогу определить, где проблема?Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

образец данных

df <- data.frame( a = 1:10, b = 11:20, c = 5)

#     a  b c
# 1   1 11 5
# 2   2 12 5
# 3   3 13 5
# 4   4 14 5
# 5   5 15 5
# 6   6 16 5
# 7   7 17 5
# 8   8 18 5
# 9   9 19 5
# 10 10 20 5

код

P1 <- 5
df[ , c( df[5, ] == P1 ) ]

#     a c
# 1   1 5
# 2   2 5
# 3   3 5
# 4   4 5
# 5   5 5
# 6   6 5
# 7   7 5
# 8   8 5
# 9   9 5
# 10 10 5

объяснение

df[5, ] == P1 возвращает строку результатов ИСТИНА / ЛОЖЬ 5 из df, ИСТИНА, когда значение == P1
c( df[5, ] == P1 ) помещает этот результат в логический вектор,
df[ , c( df[5, ] == P1 ) ] подставляет в столбцы df этот логическийвектор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...