[D3] Ну.
Я устанавливаю этот пакет nuget
Install-Package Svg
]
Здесь вы можете найти исходный код пакета на github здесь
. Тогда вы можете сделать это:
var svgDocument = SvgDocument. Открытый (путь); using (var smallBitmap = svgDocument.Draw ()) {var width = smallBitmap.Width; var height = smallBitmap.Height; if (width! = 2000) // Я изменяю размер моего растрового изображения {width = 2000; высота = 2000 / маленькийBitmap.Width * высота; } using (var bitmap = svgDocument.Draw (ширина, высота)) // Я снова визуализирую {bitmap.Save (pngPath, ImageFormat.Png); }}
Наслаждайтесь!
Вы можете так же легко получить доступ к каждому элементу в списке, используя, например, path[[1]]
. Вы не можете поместить набор матриц в атомный вектор и получить доступ к каждому элементу. Матрица представляет собой атомный вектор с атрибутами измерения. Я бы использовал структуру списка, возвращенную split
, для чего она была предназначена. Каждый элемент списка может хранить данные разных типов и размеров, поэтому он очень универсален, и вы можете использовать функции *apply
для дальнейшей работы с каждым элементом в списке. Пример ниже.
# For reproducibile data
set.seed(1)
# Make some data
userid <- rep(1:2,times=4)
data1 <- replicate(8 , paste( sample(letters , 3 ) , collapse = "" ) )
data2 <- sample(10,8)
df <- data.frame( userid , data1 , data2 )
# Split on userid
out <- split( df , f = df$userid )
#$`1`
# userid data1 data2
#1 1 gjn 3
#3 1 yqp 1
#5 1 rjs 6
#7 1 jtw 5
#$`2`
# userid data1 data2
#2 2 xfv 4
#4 2 bfe 10
#6 2 mrx 2
#8 2 fqd 9
Доступ к каждому элементу с помощью оператора [[
следующим образом:
out[[1]]
# userid data1 data2
#1 1 gjn 3
#3 1 yqp 1
#5 1 rjs 6
#7 1 jtw 5
Или используйте функцию *apply
для выполнения дальнейших операций над каждым элементом списка , Например, чтобы взять среднее значение столбца data2
, вы можете использовать sapply следующим образом:
sapply( out , function(x) mean( x$data2 ) )
# 1 2
#3.75 6.25
Наткнулся на этот ответ, и я действительно хотел, чтобы группы BOTH (данные содержали одного пользователя и данные, содержащие все, кроме одного пользователя). Не обязательно для специфики этого сообщения, но я думал, что добавлю, если кто-то пойдет по той же проблеме, что и я.
df <- data.frame(
ran_data1=rnorm(125),
ran_data2=rnorm(125),
g=rep(factor(LETTERS[1:5]), 25)
)
test_x = split(df,df$g)[['A']]
test_y = split(df,df$g!='A')[['TRUE']]
head(test_x)
x y g
1 1.1362198 1.2969541 A
6 0.5510307 -0.2512449 A
11 0.0321679 0.2358821 A
16 0.4734277 -1.2889081 A
21 -1.2686151 0.2524744 A
> head(test_y)
x y g
2 -2.23477293 1.1514810 B
3 -0.46958938 -1.7434205 C
4 0.07365603 0.1111419 D
5 -1.08758355 0.4727281 E
7 0.28448637 -1.5124336 B
8 1.24117504 0.4928257 C
dlply(df, .(userid))
и обнаружил, что это плохо по сравнению сsplit
, даже без привлечения времени выполненияrequire(plyr)
, спасибо и OP! – Francis 26 March 2015 в 15:04