ï» ¿ символы, добавленные к началу каждого файла

Один из способов - заполнить NA предыдущими NA, используя na.locf из zoo, и выполнить сравнение

library(zoo)

zed$possessionName <- na.locf(zed$possessionName)
zed$output_col <- c(1, +(zed$possessionName[-1] != zed$possessionName[-nrow(zed)]))


zed
#   possessionName possessionMarket output_col
#1          Eagles   Boston College          1
#2     Blue Devils             Duke          1
#3     Blue Devils             <NA>          0
#4     Blue Devils             Duke          0
#5          Eagles   Boston College          1
#6     Blue Devils             Duke          1
#7     Blue Devils             Duke          0
#8          Eagles   Boston College          1
#9          Eagles   Boston College          0
#10         Eagles   Boston College          0
#11         Eagles             <NA>          0
#12    Blue Devils             Duke          1
#13    Blue Devils             Duke          0
#14    Blue Devils             <NA>          0
#15         Eagles   Boston College          1

. ] мы можем использовать fill и lag

library(tidyverse)

zed %>%
  fill(possessionName) %>%
   mutate(output_col = c(1, +(possessionName != lag(possessionName))[-1]))
8
задан Owen Blacker 6 February 2012 в 07:45
поделиться

8 ответов

Хорошо, я отладил Ваш код.

Метки BOM появляются в исходном потоке, когда файлы читаются из диска:

byte[] bytes = File.ReadAllBytes(physicalPath);
// TODO: Convert unicode files to specified encoding. For now, assuming
// files are either ASCII or UTF8

При чтении файлов правильно можно избавиться от меток.

5
ответ дан 3 November 2019 в 12:16
поделиться

ï» ¿ символы являются маркерами BOM UTF.

21
ответ дан 3 November 2019 в 12:16
поделиться

Это - Порядок байтов Mark (BOM) UTF.

Это будет в начале каждого файла, но Ваш редактор проигнорирует их там. При конкатенации они заканчивают в середине, таким образом, Вы видите их.

7
ответ дан 3 November 2019 в 12:16
поделиться

Проверьте, как Ваши js файлы кодируются и обеспечивают то же кодирование в коде, который делает чтение и конкатенацию. Эти два символа обычно указывают на unicode.

2
ответ дан 3 November 2019 в 12:16
поделиться

Я думаю, что это - Порядок байтов Mark (BOM) для файлов с кодировкой UTF-8. Эта метка позволяет определять, в каком хранится кодирование файла.

6
ответ дан 3 November 2019 в 12:16
поделиться

Теми символами является BOM UTF-8. Не кажется, что они прибывают из gzipped потока. Более вероятно, что они вставляются в ответный поток, таким образом, я предложил бы очистить ответ прежде, чем работать с ним:

context.Response.Clear();
2
ответ дан 3 November 2019 в 12:16
поделиться

Вы не опубликовали фактическое решение. Вот моя душа. В строке, где он считывает файл в память, я нашел какой-то странный способ удалить спецификацию:

byte[] bytes = File.ReadAllBytes(physicalPath);
String ss = new StreamReader(new MemoryStream(bytes), true).ReadToEnd();
byte[] b = StrToByteArray(ss);
return b;  

И вам также понадобится эта функция:

public static byte[] StrToByteArray(string str)
{
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
    return encoding.GetBytes(str);
} 

Nitech

2
ответ дан 3 November 2019 в 12:16
поделиться

Если у вас есть содержимое файла в виде строки, .Trim () очень удобно отсекает "BOM".

Возможно, вы не сможете этого сделать, или вы можете захотеть пробел в конце файла, но это определенно вариант.

Для .js пробелы не важны, так что это может сработать.

3
ответ дан 3 November 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: