我为R https://cran.r-project.org/web/packages/slickR/vignettes/basics.html找到了很酷的旋转木马包
下面的代码将创建旋转木马,其中点被数字替换。
cP1 <- htmlwidgets::JS("function(slick,index) {
return '<a>'+(index+1)+'</a>';
}")
opts_dot_number <- settings(
initialSlide = 0,
slidesToShow = 5,
slidesToScroll = 100,
focusOnSelect = TRUE,
dots = TRUE,
customPaging = cP1
)
slick_dots <- slickR(
obj = nba_player_logo$uri,
height = 100,
width = "95%"
)
slick_dots + opts_dot_number我的问题是,您将如何用自定义文本替换数字?当前代码生成从1到11的数字,但是否可以用
“一”“二”“三”等
发布于 2022-08-12 08:54:29
您需要的是添加一个函数,将数字翻译成单词。网上有很多这样的东西,one can be found in this SO thread。
然后,就像将这个函数添加到自定义JS中一样简单:
cP1 <- htmlwidgets::JS("
function(slick,index) {
const numToWordObj = {
0: 'zero',
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five',
6: 'six',
7: 'seven',
8: 'eight',
9: 'nine',
10: 'ten',
11: 'eleven',
12: 'twelve',
13: 'thirteen',
14: 'fourteen',
15: 'fifteen',
16: 'sixteen',
17: 'seventeen',
18: 'eighteen',
19: 'nineteen',
20: 'twenty',
30: 'thirty',
40: 'forty',
50: 'fifty',
60: 'sixty',
70: 'seventy',
80: 'eighty',
90: 'ninety'
};
const placement = {
100: ' hundred',
1000: ' thousand',
1000000: ' million',
1000000000000: ' trillion'
};
const numToWord = (num) => {
const limiter = (val) => num < val;
const limiterIndex = Object.keys(placement).findIndex(limiter);
const limiterKey = Object.keys(placement)[limiterIndex];
const limiterVal = Object.values(placement)[limiterIndex - 1];
const limiterMod = Object.keys(placement)[limiterIndex - 1];
if (numToWordObj[num]) {
return numToWordObj[num];
}
if (num < 100) {
let whole = Math.floor(num / 10) * 10;
let part = num % 10;
return numToWordObj[whole] + ' ' + numToWordObj[part];
}
if (num < limiterKey) {
let whole = Math.floor(num / limiterMod);
let part = num % limiterMod;
if (part === 0) {
return numToWord(whole) + limiterVal;
} else {
return numToWord(whole) + limiterVal + ' and ' + numToWord(part);
}
}
};
return '<a>'+numToWord(index+1)+'</a>';
}
")https://stackoverflow.com/questions/73322430
复制相似问题